Open-source starter demos for HarnessRouter: run agent harnesses such as Codex and Claude Code as your product backend through one API.
45
stars
45
commits
JavaScript
primary language
Aug 29, 2026
updated
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:cursor
Then 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:lumacare
Then 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.
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 workspaces
Credentials belong in an ignored .env file and never in source control. See each demo's README for its configuration and architecture.
This is a mixed-license repository:
kits/ is governed by the HarnessRouter Starter Kit License Agreement, not MIT. This covers all current and future contents of kits/, including any kit added later.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.
41 commits
4 commits
JavaScript
78.1%
CSS
11.7%
Python
10.1%
Open-source starter demos for HarnessRouter: run agent harnesses such as Codex and Claude Code as your product backend through one API.
45
stars
45
commits
JavaScript
primary language
Aug 29, 2026
updated
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:cursor
Then 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:lumacare
Then 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.
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 workspaces
Credentials belong in an ignored .env file and never in source control. See each demo's README for its configuration and architecture.
This is a mixed-license repository:
kits/ is governed by the HarnessRouter Starter Kit License Agreement, not MIT. This covers all current and future contents of kits/, including any kit added later.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.
41 commits
4 commits
JavaScript
78.1%
CSS
11.7%
Python
10.1%