Starter demos and production-ready kits for HarnessRouter, the unified API for running agent harnesses such as Codex and Claude Code as your product backend.
An LLM returns tokens. A harness gives it a sandbox, tools, and a loop, so it returns the actual file. HarnessRouter lets your app send a task through one API and get back finished work.
This repository holds two kinds of thing. Kits (kits/) are whole products you can launch and
use today — Slides, Sheets, Dashboards and Videos — each a foundation to build your own on.
Demos (demos/) are small MIT-licensed apps that show the integration patterns in code you can
read in an afternoon.
Four working products, each launched from Starter Kits in the HarnessRouter console. Launching one provisions the Harness it needs and serves the app from the HarnessRouter image — there is no separate service to deploy, no database to configure, and no API key to paste into the app.
Every one of them is the same idea in a different shape: a session is a document. The list of decks, sheets, dashboards or films is the Harness's session list, and the document is a file in that session's workspace. Delete the session and the work goes with it.
Ask for a presentation and the agent works the way a designer does: structure first, then a style system, then slide by slide. Everything it makes is an object on the canvas you can drag, retype and restyle — it hands you a deck, not a picture of one.
Rows are your data. An agent column runs one of your other agents once per row, builds its input from the columns to its left, and fills each cell with what that agent said and made. Two hundred rows is two hundred runs you did not have to orchestrate.
Say what you want to understand. The agent reads your schema, decides which charts answer it, writes the SQL for each and lays them out. Opening the dashboard re-runs every query, so the numbers are today's. It connects with a SELECT-only account and every statement is checked before it runs.
The agent plans the shots, writes a prompt for each, renders them, and lays them on a canvas while they land. Cut them on a real timeline — trim, split, layers, a music bed, a voice-over — and export one file. Shots can be seeded from a still or continue from the frame the last one ended on, which is how two clips join without a jump.
They are launched from one page in the console:
The kits under kits/ are not MIT — they carry the
HarnessRouter Starter Kit License Agreement. Individual local use is free;
so is internal use for up to three people, or any size on HarnessRouter Cloud. Selling or hosting
one for an external customer needs the
Commercial Use and Deployment Agreement. The full
terms are below.
Smaller, MIT-licensed, and meant to be read: these show the HarnessRouter integration patterns — streaming, sessions, follow-up turns, cancellation, file download — in as little code as possible.
A coding-agent interface that demonstrates project-aware tasks, streamed output, persistent sessions, follow-up work, cancellation, and generated-file downloads. Watch the 55-second build video to see it running.
Open the Cursor-style demo guide
npm install
cp .env.example .env
# Add HR_API_KEY and HR_CURSOR_AGENT_ID to .env
npm run dev:cursorThen open http://localhost:3000.
A family-care companion that uses the same secure streaming and session architecture in a healthcare-support experience.
# Add HR_API_KEY to .env; LumaCare's agent mapping is checked in
npm run dev:lumacareThen open http://localhost:3000.
Run one demo at a time because both use port 3000 by default.
.
├── demos/
│ ├── 01-cursor-coding-app/ # Primary demo
│ └── 02-lumacare/ # Secondary reference demo
├── kits/ # Separately licensed production kits (see kits/LICENSE.md)
│ ├── slides/ # Design a deck by conversation
│ ├── sheets/ # A spreadsheet where a column is an agent
│ ├── dashboard/ # Ask your database a question
│ └── video/ # Describe the film, watch the shots arrive
├── .env.example # Shared local configuration template
├── package.json # npm workspace commands
└── README.md # Repository and demo index
Each demo owns its frontend, server, tests, agent mapping, and documentation. This keeps the two products independent while making their shared HarnessRouter architecture easy to compare.
- Node.js 22 or newer
- A HarnessRouter API key, from the quickstart — the kits need none; only the demos do
- A HarnessRouter coding-agent ID for the primary demo
npm run dev:cursor # Run the primary coding demo
npm run dev:lumacare # Run the secondary LumaCare demo
npm test # Test both workspaces
npm run build # Build and type-check both workspacesCredentials belong in an ignored .env file and never in source control. See each demo's README for its configuration and architecture.
- HarnessRouter — the open-source engine these demos and kits run on.
- Documentation and Cloud — hosted service, guides, and pricing.
- Unified Harness Protocol — the open standard behind it.
- Discord — community for questions and integrations.
This is a mixed-license repository:
- Files without a more specific directory license, including the reference demos, are available under the repository MIT License.
- Everything under
kits/is governed by the HarnessRouter Starter Kit License Agreement, not MIT. This covers all current and future contents ofkits/, including any kit added later. - Individual local use is free, including learning, evaluation, personal projects, and the individual's own business operations.
- Organizations using HarnessRouter Cloud for Internal Use do not pay a separate Kit license fee or have a Direct User limit; Cloud plan and usage charges still apply.
- Non-Cloud Internal Use is free for up to three Direct Users. A paid entitlement is required before a fourth Direct User begins use or for separately metered automation.
- Creating paid Client Deliverables or selling, deploying, hosting, or providing an End Product to an external customer requires the Commercial Use and Deployment Agreement and an applicable Order Form.
- Sharing materials about your own business with investors, customers, advisers, and other counterparties is not Commercial Use merely because an external person receives them.
- Generated presentations and exported files remain usable subject to the applicable Internal or Commercial Use rights.
- Third-party components remain governed by their own licenses and notices.
The license included with a particular copy controls that copy. The current license structure does not revoke rights validly granted for an earlier copy under the license distributed with that earlier copy.




