campus-agent logs into UMS on a schedule, diffs your timetable against the last reading, and pushes what changed to a private Telegram bot — before you've walked to the wrong room. It also does the attendance math nobody wants to do by hand.
The actual local dashboard — sample data, not a mockup. The bottom two lines are what a real UMS change looks like once campus-agent catches it.
Your timetable, attendance, exam dates and the My Messages feed. Everything below is built from that one reading.
The diff between this sync and the last one, pushed to a Telegram bot you control. CANCELLED: Wed 10:20 CAP7001. Room moves and new UMS notices too, class-related ones flagged first.
campus bunk CAB106 — how many more periods you can miss and stay over the 75% bar, worked out from your real timetable and term dates.
One export writes the whole term — classes, rooms, exams, holidays — as a calendar file. Your phone handles the reminders; nothing has to stay open.
One message at 7am: today's classes, anything that changed overnight, and any course drifting toward the bar.
The screenshot above, live on your machine — set up entirely by clicking, no commands to remember.
Optional, read-only. Pulls exam, fee and placement mail out of the unread pile. Cannot send, delete, or mark anything — there's no code path that does.
Not a policy page — check any line here against the app itself.
Goes to your OS's own secret store — Windows Credential Manager or the Linux secret service. Never a file, never this download.
Never leaves the device. Phone alerts carry course codes and times; percentages stay local.
The UMS portal, and only what you switch on — your own Telegram bot, your own mail. No telemetry, no analytics. This page you're reading makes zero outside requests either — view source if you don't believe it.
Binds to 127.0.0.1 only, rejects cross-site requests. Not reachable from your network.
A half-read page is refused, not stored. The app tells you it failed instead of quietly showing stale numbers.
You need Python 3.11+ (step 1 covers Windows, which doesn't ship it) and Chrome or Edge, which you already have.
Windows: install from python.org and tick "Add python.exe to PATH" on the first screen. Check it worked: py --version in PowerShell. Linux already has it.
Windows — open your Downloads folder, Shift+right-click, "Open PowerShell window here":
Linux: sudo apt install pipx, then the same pipx install line from your Downloads folder.
"command not found" after this? Close the terminal and open a new one — the PATH change only applies to fresh windows.
A setup page opens on its own. Everything from here is clicking — flip on the modules you want, log into UMS once, connect a Telegram bot. Then open the dashboard.