Roadmap
The work on PKU harness that is done, in progress, planned or on hold, summarised from the app's plan and design documents.
This page summarises the plan and design documents in the
pku-harness repository: docs/PLAN.md,
docs/CLOUD.md, docs/PLUGIN-LANGUAGE.md, docs/CLOUD-FUNCTIONS.md and docs/OTA.md. It
reflects the state as of 2026-10-24. The plan file is the source of truth and is updated as work
lands, so check it if you need the latest detail.
Current status
- Version 1.0.0 of the Android app has been released.
- Over-the-air (OTA) updates are live. An OTA update delivers changes to the app's JavaScript code, including the plugins built into the app, without a new APK. Plugin documents don't use OTA; they update from their own links.
- The official PKU harness Cloud instance has not been deployed yet.
- Plugin server functions are switched off on the official server.
Done
Foundation and design system. The Expo + bun project scaffold, design tokens, the glass design language, motion primitives, the four-tab shell and the first-run onboarding.
Core runtime. Storage in SQLite and the system keystore. The plugin runtime, which handles effects, permissions and approvals. Provider plugins for AI models, with DeepSeek as the default and an OpenAI-compatible option. An agent loop that streams tool calls.
Agent harness. The harness is the part of the app that runs conversations with the AI agent. It now supports:
- multiple sessions, with automatic titles and replies that continue in the background;
- slash commands;
- a composer with attachments, a message queue and a model picker;
- context management and compaction;
- prompts arranged so the model provider can reuse its prefix cache;
- a board that shows token usage and cost;
- memory with approvals, where a taint gate holds back anything learned from untrusted content until you approve it.
Generative UI. The json-render component catalog, the ui.render tool, and forms whose
answers are sent back to the agent.
Campus access. A native campus HTTP module. Login through IAAA, PKU's unified login service, with a second factor asked only when the service requires it. The 手机令牌 authenticator (the IAAA mobile token). One-tap takeover of SMS codes. Multipart uploads with a file picker. Opening campus sites in the browser while already signed in. Adapters for the campus card, ITS, Treehole, Blackboard, bdkj, cwfw, cwpay, elective and the library.
Campus plugins. Wallet (campus card, network fee, utilities), course sync, Blackboard courses, grades, Treehole, campus events, elective (read-only), finance, room booking, the course catalog, the academic calendar, canteens, the shuttle bus, notices and more.
Dashboard. A widget model with widgets built by the AI and widgets provided by plugins. Each widget shows its last known value while it refreshes in the background (stale-while-revalidate). The dashboard also has an edit mode and a widget gallery.
Scheduler. A recurrence engine and notifications delivered at the exact time. On Android, checks run on time in the background and even after the app has been killed. Scheduled tasks that the agent runs, a policy for unattended runs, and onboarding that helps you grant the permissions needed for on-time delivery.
Schedule tab. A timetable that handles odd and even weeks and reminds you before class, to-dos, and reminders with free-form recurrence.
Plugin ecosystem. The plugins repository with the SDK, the registry and its validator. Remote plugins that connect through the Model Context Protocol (MCP), with approvals. The in-app marketplace. Plugins can add screens, Settings rows, tabs, widgets and commands to the app.
Plugin language (spec 1). A plugin can be a shareable folder with a PLUGIN.md file, which
the app interprets. This work includes:
- the interpreter in the SDK and its abilities, including
verify.treehole; - the author CLI (
bun run plugin validate|test|run), with every document's recorded tests run in continuous integration (CI); - installing by link or through
pkuharness://plugin, with a review sheet before install; - daily update checks, where an update that asks for wider access waits for your approval, and rollback;
- official documents bundled with the app and updated from their link;
- the AI authoring tools
(
plugins.reference / validate / tryTool / source / install).
Official documents. classrooms, campus-events, grades, canteen, shuttle and notices were ported from TypeScript to plugin documents. Each port passed parity tests, and the TypeScript versions were removed.
PKU harness Cloud. Wire protocol v1 and envelope encryption, the SDK's cloud types and the
registry's cloud field. A reference server built with Bun, Hono and SQLite. The host client,
which covers device identity, consent, an end-to-end encrypted store and channels, and the
Settings → Cloud screen. An Android foreground service (services.ongoing). The card-share
plugin, with a web viewer and pkuharness://share links.
Releases and updates. Version 1.0.0 has been released. When a version tag is pushed, CI builds a signed APK and publishes it as a GitHub release. Self-hosted, code-signed OTA updates are live. They use expo-updates, are signed in CI from a public commit, and are served as static files from our server.
In progress
- Porting integrations to plugin documents. The course catalog, elective, library reads and the Treehole tools come next. After them come the integrations that need new host abilities. See Declarative plugins.
- iOS. The app already starts safely on iOS, and the keychain and notification work is done. The Swift port of the campus HTTP module is still pending.
- Plugin batch 2. More utilities and finance features, Blackboard assignment submission and 智云课堂 (the lecture-recording platform), library loans, renewals and seats, and campus-life features such as portal apps.
- Live verification. Some services can only be tested at certain times. For example, the elective system can't be tested outside the add/drop window.
Planned
- PKU harness Cloud. Deploy the official instance and keep it minimal: a relay for live shares, a small end-to-end encrypted store, and viewer pages. Pair multiple devices.
- Host capabilities requested by plugins. Scoped access to public HTTP for plugins.
- Scoped session grants. These would let a remote plugin act on a campus service without ever seeing your credentials.
- A hosted model option.
On hold
Plugin server functions are on hold. These are declared with server: in PLUGIN.md (see
docs/CLOUD-FUNCTIONS.md). The existing implementation stays in the reference server, but
functions are switched off on the official server. Collections, schedules, push, groups and
webhooks are not being built. For now, keep your plugin's work on the phone or use your own
backend.
Not planned for now
A web version of the app is not planned. Neither are payments inside the app: when you pay for something, the app hands off to the official cashier.
Repositories
The repositories of the pkuinfo organisation (the app, the plugins repository, pkucli, pkubdcard and this website), what each one contains and how they depend on each other.
Contributing
How to contribute plugins, app changes, protocol notes and documentation to PKU harness, and the conventions, security rules and license that apply.