ProgramOS

Academic programs lose half their decisions in email threads and meeting notes—and a new advisor or faculty member can’t get up to speed without digging through old inboxes. ProgramOS is a recipe for an AI program coordinator that answers stakeholder questions on whatever channel they prefer (email, Telegram, web chat) and quietly writes every decision down in a shared, human-readable folder. Built at Gies to run the online MSBAi program, where it goes by the persona name K-ai.

1 Afternoon to First Bot
3 Live Channels
1K–1.5K LoC on NanoClaw

What It Does

One coordinator that listens everywhere your program already lives

1

Answers questions, with citations

Faculty, advisors, staff, and students message the bot the way they already prefer—email, Telegram, or a web chat box. The agent reads the program’s shared folder of policies, syllabi, decisions, and FAQs, and answers with a citation back to the source so people can verify.

2

Captures decisions as they happen

When someone sends a status update or makes a call (“we’re moving the deadline,” “Dr. X is teaching this section now”), the agent files it into the program folder as a dated decision, action item, or open question. No more “wait, what did we decide in March?”

3

Keeps a clean audit trail

Every message in, every reply out, and every change to the program folder is logged in a way an accreditor (or a successor coordinator) can read end-to-end. The folder is plain markdown in version control—no proprietary database, nothing locked behind a vendor.

Why It Matters

Built for the people who actually run programs

Program memory survives turnover

Coordinators rotate. Faculty leave. Without a single source of truth, every transition costs months of rediscovery. ProgramOS treats the program folder as the institutional memory—and the bot as the friendly front door to it.

Stakeholders meet you where they are

Students live on Telegram or WhatsApp. Faculty live in email and Teams. Industry partners live wherever you last met them. One coordinator on every channel beats four siloed tools nobody checks.

Privacy stays in your hands

The reference deployment serves a real Master’s program with stakeholder PII, internal allowlists, and accreditation drafts. ProgramOS is the public recipe; everything sensitive stays in a private folder you own and control.

How K-ai Is Wired

The Gies MSBAi deployment: three channels, one container, one program repo — gated on the way in and on the way out

Email webhook → email service Telegram Bot API long-poll Web Chat REST /chat · read-only single Node process · port 3003 · path-routed ProgramOS Agent · Docker-isolated NanoClaw runtime · Claude Code in a container Read-only mode Questions → search repo Reply with citations no commits Workspace-write mode Extract decisions / actions / questions Granular commits + push explicit signal or role in: EMAIL_ALLOWLIST gate · sender authorization enforced before any mode runs out: delivery gate · every outbound reply validated before send · gate verdicts machine-logged msba-online (program repo) program/CONCEPT.md · EMAIL_ALLOWLIST.md program/courses/ · program/policies/ · skills/ discussions/DECISIONS · ACTION_ITEMS · OPEN_QUESTIONS plain markdown · version-controlled · program owns it Audit log append-only · every inbound message, every outbound reply, every commit private git repo · accreditation-ready

One Node process routes three channels (email, Telegram, web chat) into a single container-isolated agent. The agent runs in read-only or workspace-write mode per message, operates against a plain-markdown program repository the institution owns, and writes everything — messages, replies, gate verdicts, and commits — into an append-only audit log. Traffic is gated in both directions: a sender allowlist on the way in, and a uniform delivery gate on the way out that validates every reply before it reaches a stakeholder, refusing known agent-scaffolding signatures and surfacing refusals to the operator (a hardening lesson from production; see SPEC §3). Teams and Copilot Studio handlers were built early on and retired in June 2026 as the deployment consolidated on the channels stakeholders actually used. The program repo also carries a skills/ directory the agent reads and proposes additions to via pull request, and optional read-only extra mounts let it cite content that lives in Box, SharePoint, or other team stores while keeping the program repo as the system of record.

Start Small, Grow Up

Same recipe, same program folder—only the plumbing changes as you scale

💻

Tier 1: Laptop

Telegram bot up by end of an afternoon. No IT ticket. Email follows within a week. Perfect for piloting with one program.

🌍

Tier 2: Small Server

24/7 uptime, web chat, email via webhook, and the channels from Tier 1 on a cheap VPS. Teams (Bot Framework) and Copilot Studio stay deferred until you have M365 admin support.

🏢

Tier 3: Cloud

Managed runtime behind your university’s SSO and compliance posture. Same spec, enterprise plumbing. Still one program per deployment; multi-tenant is out of scope for this spec.

📖

Illinois shortcut

UIUC programs can wire @illinois.edu email into the bot without a Microsoft 365 admin app registration. Recipe included.

A Spec, Not a Fork

We share the recipe. Your AI assistant cooks it for your program.

1

Bootstrap your program folder

One command scaffolds a fresh folder with the right structure—policies, decisions, action items, audit log. A “brainstorm” prompt sits inside it, ready to interview you about your program.

2

Hand the spec to a coding agent

Open Claude Code (or Cursor, or Codex). Point it at the spec and your fresh program folder. It asks clarifying questions about your stakeholders and channels, then builds the bot to match.

3

Iterate in plain English

Most program-specific behavior lives in plain-text instruction files (one per channel), in the structure of your program folder, and in a skills/ directory the agent reads and proposes additions to via pull request. All stay readable, editable, and reviewable. No deep code dive required.