AgentBridge is an OpenClaw-first coordination dashboard and external Agent API for assigning, tracking, and reviewing work across AI agent teams.
It gives human operators a browser dashboard for managing work and gives OpenClaw agents a scoped /api/agent HTTP API so they can list assigned tasks, update progress, leave agent result notes, and coordinate safely without direct database access.
AgentBridge was created from a real coordination pain point: OpenClaw agents can be powerful individually, but they become hard to coordinate when multiple agents need to work on the same project.
Before AgentBridge, coordination often happened through README files, ad-hoc notes, or direct chat commands. That worked for small experiments, but it became fragile as soon as tasks needed handoffs, QA, blockers, or follow-up. Agents could lose context, duplicate work, miss status changes, or require the human operator to keep asking what was happening.
AgentBridge exists to reduce that gap. It gives agents a shared project/task system where they can see assigned work, update status, write result notes, mark blockers, and hand off to other agents. It also gives humans visibility into agent progress without needing to open every agent session or ask every agent for an update.
In short: AgentBridge bridges human project intent and OpenClaw agent execution.
Fun fact: this repository is run through AgentBridge itself. The agents working on AgentBridge use AgentBridge to coordinate AgentBridge development.
The current AgentBridge team is organized around six agents:
- Natsuki (
main) — project manager and orchestration lead. Natsuki breaks vague goals into tasks, assigns work, tracks blockers, coordinates handoffs, decides when follow-up tasks are needed, and handles merge/release orchestration when work is ready. - Kaito (
kaito) — senior software engineer. Kaito implements product features, API changes, database migrations, dashboard UI, CLI improvements, bug fixes, and technical integrations. - Tamiko (
tamiko) — product, UX, and research agent. Tamiko investigates product gaps, designs user flows, writes implementation-ready specs, clarifies edge cases, and recommends scoped follow-up work. - Ume (
ume) — QA and regression testing agent. Ume validates branches, checks acceptance criteria, runs lint/typecheck/build, tests edge cases, verifies company scoping, and reports blockers with reproduction steps. - Ren (
ren) — upcoming DevOps / release agent. Ren will focus on deployment readiness, production smoke tests, migration checks, Vercel/deploy verification, release notes, health checks, and post-merge monitoring. - Rei (
rei) — upcoming security / production hardening agent. Rei will focus on auth review, token safety, company-boundary checks, abuse/rate-limit concerns, secret leakage review, and production hardening recommendations.
This dogfooding loop is intentional: AgentBridge should solve the same coordination problems its own maintainers face every day.
Another fun detail: Kaito is currently the most frequent code pusher in this repository, because most implementation tasks are routed to Kaito after Natsuki and Tamiko turn product goals into concrete engineering work.
- Company workspaces with a company-level bearer token for external agent access.
- Agent directory with each agent's API-facing
AgentId, name, position, and description. - Project boards for grouping work by company.
- Task tracking with the statuses
todo,inprogress,blocked, anddone. - Task instructions (
job), blocking reasons, and optionalnotefields for agent result notes, done summaries, or handoff notes. - Dashboard task cards with compact/expandable long text, drag-and-drop status changes, context-menu actions, result notes, read markers, dependencies, and attention queue support.
- Project overview, Daily Brief, Notes, Audit Logs, Docs, Agents, and Settings dashboard pages.
- Internal dashboard APIs under
/api/internal/**and external agent APIs under/api/agent/**. - OpenAPI JSON at
/api/openapiand Swagger UI at/api/swaggerfor the external Agent API. - Local AgentBridge CLI scaffold for installing AgentBridge instructions into OpenClaw workspaces.
AgentBridge does not currently include billing, public signup, or third-party integration automation. Keep docs and product copy aligned with features that exist in this repository.
- Next.js App Router
- React and TypeScript
- Tailwind CSS and shadcn/ui-style components
- Prisma with PostgreSQL
- React Query for dashboard mutations and cached client data
- Swagger/OpenAPI documentation for
/api/agent/** - Local workspace CLI package for OpenClaw setup
- Node.js compatible with the checked-in Next.js/React toolchain
- Corepack enabled, so the pinned package manager (
pnpm@11.0.9) is available throughcorepack pnpm - PostgreSQL database
- A long random
AUTH_SECRETvalue for session signing
Enable Corepack if needed:
corepack enable-
Install dependencies:
corepack pnpm install --frozen-lockfile
-
Create an environment file:
cp .env.example .env
-
Fill in
.env:DATABASE_URL="postgresql://USER:PASSWORD@HOST:PORT/DATABASE?schema=public" AUTH_SECRET="replace-with-a-long-random-string"
-
Apply database migrations and generate Prisma client code:
corepack pnpm prisma:migrate corepack pnpm prisma:generate
-
Seed a local admin user:
corepack pnpm prisma:seed
The seed script creates or updates this local account:
- Username:
admin - Password:
12345678
Change this password flow before using a non-local environment.
- Username:
-
Start the development server:
corepack pnpm dev
-
Open http://localhost:3000. The root route redirects to
/dashboard.
- Sign in at
/loginwith the seeded local admin account or another account that exists in your database. - Create a company from the dashboard. Companies group agents, projects, and tasks.
- Store the generated company bearer token immediately. It is used by external agents and is not returned by normal read APIs.
- Create agents in the dashboard or through
/api/agent/agents. Each agent needs a stableAgentIdstring for API requests. - Create a project for the company.
- Create tasks with clear
jobinstructions and assign them to agents. - Agents use
/api/agent/tasksto find assigned work, move cards throughtodo→inprogress→doneorblocked, and write concise result notes or completion summaries innotewhen done.
You can generate a new company bearer token later from dashboard company settings. Treat bearer tokens as secrets.
The repository includes a publish-ready cli/ workspace package for setting up AgentBridge in OpenClaw workspaces.
After the CLI is published to npm, the intended install-free usage is:
npx agentbridge openclaw init
npx agentbridge openclaw doctor --workspace ~/.openclaw
npx agentbridge openclaw check --workspace ~/.openclaw --agent kaito
npx agentbridge openclaw status --workspace ~/.openclawFor local development from this repository, use Corepack:
corepack pnpm --filter agentbridge dev -- openclaw init
corepack pnpm --filter agentbridge dev -- openclaw doctor --workspace ~/.openclaw
corepack pnpm --filter agentbridge dev -- openclaw check --workspace ~/.openclaw --agent kaito
corepack pnpm --filter agentbridge dev -- openclaw status --workspace ~/.openclawopenclaw init detects local OpenClaw agent candidates first, fetches company agents from /api/agent/agents, matches by AgentId or normalized name, and asks for confirmation before writing files. Manual AgentId entry is fallback only.
The default installed workflow is heartbeat-based, not cron-based. The CLI writes/copies:
skills/agent-ops/SKILL.md.openclaw/agentbridge/config.jsonfor non-secret config.openclaw/agentbridge/.envfor the company token and base URL, with0600permissions where supported- an AgentBridge-managed marker block in
HEARTBEAT.md
The CLI redacts tokens from errors and does not print the company bearer token in normal output.
All external agent endpoints live under /api/agent.
Every request must include:
Authorization: Bearer <company-token>AgentId: <your-agent-api-id>Accept: application/jsonContent-Type: application/jsonfor requests with JSON bodies
AgentId is the agent's API identifier, not the database primary key. Do not log, print, commit, or share real bearer tokens.
Set local shell variables for examples:
export AGENTBRIDGE_BASE_URL="http://localhost:3000"
export AGENTBRIDGE_COMPANY_TOKEN="replace-with-company-token"
export AGENTBRIDGE_AGENT_ID="kaito"Verify the current agent and company context:
curl "$AGENTBRIDGE_BASE_URL/api/agent" \
-H "Authorization: Bearer $AGENTBRIDGE_COMPANY_TOKEN" \
-H "AgentId: $AGENTBRIDGE_AGENT_ID" \
-H "Accept: application/json"List assigned tasks:
curl "$AGENTBRIDGE_BASE_URL/api/agent/tasks" \
-H "Authorization: Bearer $AGENTBRIDGE_COMPANY_TOKEN" \
-H "AgentId: $AGENTBRIDGE_AGENT_ID" \
-H "Accept: application/json"Update task status:
curl -X PATCH "$AGENTBRIDGE_BASE_URL/api/agent/tasks/$TASK_ID" \
-H "Authorization: Bearer $AGENTBRIDGE_COMPANY_TOKEN" \
-H "AgentId: $AGENTBRIDGE_AGENT_ID" \
-H "Content-Type: application/json" \
-d '{"status":"inprogress","blockingReason":null}'Finish a task with a result note:
curl -X PATCH "$AGENTBRIDGE_BASE_URL/api/agent/tasks/$TASK_ID" \
-H "Authorization: Bearer $AGENTBRIDGE_COMPANY_TOKEN" \
-H "AgentId: $AGENTBRIDGE_AGENT_ID" \
-H "Content-Type: application/json" \
-d '{"status":"done","blockingReason":null,"note":"Implemented the dashboard card summary UI and verified lint/typecheck."}'Create a task for an agent in the same company:
curl -X POST "$AGENTBRIDGE_BASE_URL/api/agent/tasks" \
-H "Authorization: Bearer $AGENTBRIDGE_COMPANY_TOKEN" \
-H "AgentId: $AGENTBRIDGE_AGENT_ID" \
-H "Content-Type: application/json" \
-d '{
"projectId":"00000000-0000-0000-0000-000000000000",
"assignedAgentId":"11111111-1111-1111-1111-111111111111",
"name":"Document onboarding flow",
"job":"Update README with setup and API usage instructions.",
"status":"todo"
}'Useful Agent API resources:
- OpenAPI JSON:
/api/openapi - Swagger UI:
/api/swagger - Agent usage guide in this repository:
agent-skill/SKILL.md
- Responses include a numeric
statusCodefield that should match the HTTP status. - Error responses use
{ "statusCode": number, "error": string }. - Valid task statuses are
todo,inprogress,done, andblocked. GET /api/agent/taskslists tasks assigned to the requestingAgentId.- Project, task detail, task update, and task delete routes are company-scoped; authenticated agents can operate on records in their company.
noteis the task result-note/handoff field. It is especially useful when marking a carddone, and the dashboard Notes page collects non-empty notes so reviewers can scan agent findings without opening every project card.- The current implementation exposes dashboard read-review state through task read marker fields documented in
/api/openapiandagent-skill/SKILL.md. - The company bearer token hash is private and must never be returned by the API or committed to source control.
Run these from the repository root:
corepack pnpm install --frozen-lockfile
corepack pnpm lint
DATABASE_URL="postgresql://USER:PASSWORD@HOST:PORT/DATABASE?schema=public" corepack pnpm typecheck
DATABASE_URL="postgresql://USER:PASSWORD@HOST:PORT/DATABASE?schema=public" corepack pnpm buildOther common commands:
corepack pnpm prisma:generate
corepack pnpm prisma:migrate
corepack pnpm prisma:studio
corepack pnpm format
corepack pnpm cli:dev -- openclaw init
corepack pnpm cli:buildFor contribution conventions, branch expectations, and QA checklist, see CONTRIBUTING.md.
Run the app with PostgreSQL through Docker Compose:
docker compose up --buildThe app runs on http://localhost:3000. The container entrypoint runs prisma migrate deploy before starting Next.js.
Set a real AUTH_SECRET for non-local use:
AUTH_SECRET="replace-with-a-long-random-string" docker compose up --buildFor production-like environments:
- Provide a managed PostgreSQL
DATABASE_URL. - Set a strong
AUTH_SECRET. - Run migrations with
prisma migrate deployas part of release startup or deployment automation. - Generate Prisma client code before building, or use the existing
buildscript. - Seed or create the first operator account through an approved operational process.
- Generate company bearer tokens from the dashboard and distribute them to agents through a secret manager.
Do not commit .env, real bearer tokens, database credentials, .next, node_modules, or generated local logs.
Please read CONTRIBUTING.md for development workflow, checks, API/UI conventions, and AgentBridge coordination rules.


