Unified local AI workstation for model lifecycle, chat/agent workflows, orchestration, observability, and remote deployment.
For users who only need the coding agent without managing vLLM infrastructure:
- Default ON - shows only Agent + Settings tabs
- Toggle in Settings → Appearance → Interface Mode
- Switch to "Full (vLLM Infra)" to access Status, Usage, Models, Server tabs
Use Lite Mode when your org manages the vLLM deployment and you just need the agent desktop.
Connect to OpenRouter or any OpenAI-compatible API:
- Go to Settings → Connection
- Set API URL:
https://openrouter.ai/api - Set API Key: your OpenRouter key
- Save and select model in Agent dropdown
Works with any provider exposing /v1/models and /v1/chat/completions.
Test mobile apps directly from the agent workspace:
- Device control: list, select, boot emulators/simulators
- Live view: iOS streaming via serve-sim, Android via screenshot polling
- Touch input: tap-to-interact on device screen
- Hardware buttons: HOME, BACK, etc.
- Logs: device log viewer
Requires mobilecli (npm) for device control. Optional serve-sim for iOS 60fps streaming.
npm install -g mobilecli
npm install -g serve-sim # optional, iOS onlyThe internal coding agent ships with a verification loop baked into the runtime — no .cursor/skills/ setup, no opt-in flag, no per-project rules. Every fresh install gets it.
After each file edit the agent is instructed (and, if needed, forced) to verify the change against the running app:
verify_web— navigate the embedded browser to a URL and capture screenshot / DOM / a11y tree.verify_mobile— screenshot a connected device (iOS sim or Android emulator) and optionally tail logs.verify_responsive— capture the same URL across mobile / tablet / desktop viewports.verify_until_pass— iterative grind loop (up to 3 iterations) whose transcript the agent self-evaluates against free-formsuccess_criteria.
Two enforcement layers ship together:
- A built-in system-prompt addendum is injected on every agent spawn, telling the model when to call each tool.
- A server-side safety net in
/api/agent/turnwatches the SSE stream — if the agent edited frontend or mobile files but never called averify_*tool, the server automatically issues a follow-up prompt that forces verification before closing the turn. Look forauto_verifySSE events in the chat stream.
A user-facing toggle to disable auto-verify is on the roadmap; today it is always on.
This release consolidates major repo changes currently in the tree, including:
- OpenAI proxy activation policy controls for
load_if_idleandswitch_on_request - lifecycle-aware run aborts when model eviction happens
- SSE run stream termination fixes across backend and frontend
- local-only chat/runtime cleanup and controller simplification
- dashboard launch-state cleanup improvements
- reduced chat/controller indirection and removed dead remote-runtime branches
- Overview: docs/README.md
- Setup and deployment: docs/operations.md
- Environment variables: docs/environment.md
controller/: Bun/Hono backend, orchestration, chat runtime, lifecycle, metricsfrontend/: Next.js app, chat UI, proxy endpoints, client statecli/: Bun CLI for controller accessshared/: shared types/contractsconfig/: runtime and integration configsdocs/: documentation index and environment notesscripts/: operational scripts (deployment + controller daemon helpers)docker-compose.yml: full stack service definitionsscripts/daemon-*.sh: start/status/stop helpers for background controller runs
- Controller (local):
cd controller
npx tsc --noEmit
bun test
bun src/main.ts- Frontend:
cd frontend
npm run test
npm run lint
npm run build
npm run dev- Full stack with Docker (controller + frontend + infra):
docker compose up -d --build controller frontend- Run controller as a background daemon:
./scripts/daemon-start.sh
./scripts/daemon-status.sh
./scripts/daemon-stop.shcurl -sS http://localhost:8080/health
curl -I http://localhost:3000See docs/operations.md for setup, deployment, and verification instructions.
- Development branch:
dev - Production integration branch:
main - Release tags:
vX.Y.Z
For this release:
- merge release work into
mainanddev - tag
v1.13.0 - create a new post-release working branch