CodeAgora is consolidating three separate human-facing surfaces toward one planned cross-platform desktop app:
- old web dashboard
- old Ink/React terminal TUI
- old Discord/Slack/generic webhook notifications package
The CLI remains. The GitHub Action remains. MCP remains. Those are agent/automation surfaces.
The desktop app is intended to become the primary surface for humans who want to inspect review history, configure providers, watch pipeline progress, review model/cost information, and receive local alerts. It remains a private preview until packaging, release, and parity gates are ready.
Automation / agent surfaces:
CLI
GitHub Action
MCP
Human local surface:
Tauri desktop appThe previous surface area was too wide:
CLI
GitHub Action
MCP
Web dashboard
TUI
NotificationsThat made the product feel like multiple partial apps rather than one focused system. The web dashboard and TUI both tried to solve the same problem: giving a human a better way to view and operate CodeAgora locally. Notifications added yet another surface, but mostly duplicated what a good local app should own: alerts, status, and review completion visibility.
The new product split is cleaner:
- CLI: command surface for LLM agents, scripts, CI, and power users
- GitHub Action: PR automation surface
- MCP: AI IDE/agent integration surface
- Desktop app: planned human-facing local UI, currently private preview
These packages are no longer first-class packages:
packages/web
packages/tui
packages/notificationsThese CLI commands are removed:
agora dashboard
agora tui
agora notify
agora review --notifyGitHub Action and MCP no longer send Discord/Slack webhook notifications.
The Tauri app should absorb the valuable parts of the removed surfaces.
- session history
- review detail page
- annotated diff viewer
- pipeline progress
- model leaderboard
- cost analytics
- configuration editor
- discussion/debate viewer
- compare sessions
- quick local review flow
- staged/unstaged diff selection
- keyboard-friendly navigation
- compact result summary
- provider status
- reviewer/model selection
- local desktop notifications
- review completion alerts
- failed review alerts
- optional sound/badge state
- later: OS notification center integration
The desktop app should not bring back Discord/Slack webhook delivery as a core feature. If external notifications return later, they should be a plugin/integration layer, not a dedicated package.
Initial scaffold:
packages/desktop/
├── package.json
├── src/
│ ├── main.ts
│ ├── api/
│ │ └── desktop-bridge.ts
│ ├── index.html
│ └── styles.css
├── scripts/
│ └── copy-assets.mjs
├── src-tauri/
│ ├── Cargo.toml
│ ├── tauri.conf.json
│ └── src/
│ └── main.rs
└── README.mdThe package is currently private while packaging and release mechanics settle.
The desktop app should call existing TypeScript/Node core logic through a thin bridge rather than reimplementing review behavior in Rust.
The app must not become a second core.
Desktop may own:
- window state
- local UI state
- desktop notifications
- session browsing UI
- configuration forms
- local command invocation
- local file selection
Desktop must not own:
- reviewer orchestration
- verdict logic
- GitHub PR mapping
- provider registry
- config schema
- finding schema
- session storage format
Those stay in @codeagora/core, @codeagora/shared, @codeagora/github, and the CLI.
Preferred first version:
Tauri UI
-> Tauri command
-> Node/CLI bridge
-> CodeAgora core/CLI
-> .ca/sessions
-> Tauri UI reads session/result filesThis is less elegant than a pure in-process library call, but it keeps the first desktop app simple and preserves CLI parity. The CLI is the agent-facing API; the desktop app can use it as the local backend until a cleaner library boundary is needed.
Later version:
Tauri UI
-> local backend bridge
-> @codeagora/core library API
-> session storeThe first useful app does not need to recreate the entire web dashboard.
MVP:
- show recent sessions — scaffolded
- open a session detail — scaffolded
- show verdict, severity counts, top findings — scaffolded
- show markdown/report output — scaffolded
- run review on current repo diff — CLI bridge scaffolded
- edit basic provider/config settings — scaffolded
- show local notification when review completes — scaffolded
Not MVP:
- full diff annotation UI
- model intelligence charts
- cost charting
- session comparison
- inline fixes
- cloud sync
- team accounts
- Discord/Slack webhooks
The CLI is not just for humans. It is the most useful interface for LLM agents.
Agents need:
- stable commands
- JSON output
- NDJSON progress
- stdin diff support
- staged diff support
- PR review support
- deterministic exit codes
The desktop app should not replace the CLI. It should sit beside it.
CodeAgora should eventually have one human local UI.
Before:
web dashboard + TUI + notifications
After:
desktop appThis keeps the product easier to explain:
Use CodeAgora from the CLI, in CI, through MCP, or, once promoted, as a desktop app.
That is enough surface area. More than that starts to feel like product fog.