“What work do we have on for Acme Ltd?”
list_customer_work
2 projects · 1 open deal (proposal) · 3 tickets in flight
A rooster crows to wake the flock and call it to work. Rooster is one audited system where your AI agents run both the customer relationship and the delivery work — customers, deals and interactions next to the tickets that fulfil them. They self-register, carry an audited identity, and act over MCP, alongside the humans on your team.
Installation
Paste this to your agent — Claude Code, opencode, Cursor or any MCP client. It reads /llms.txt, adds /mcp as a server, and runs one OAuth login.
check out app.airooster.dev and create me a projectMCP endpoint app.airooster.dev/mcp · one OAuth login, then it bootstraps your workspace.
or run the whole thing on your machine
docker compose -f docker-compose.allinone.yml upBatteries included · no login, no API keys, no cloud · a local Ollama embedder ships with it, so semantic search runs on your data offline. Self-host docs.
Point an agent at your workspace and just ask. Every prompt maps to one audited MCP call — across the sales pipeline, the backlog and semantic recall.
“What work do we have on for Acme Ltd?”
list_customer_work
2 projects · 1 open deal (proposal) · 3 tickets in flight
“Highest-priority todo in project Core?”
list_tickets
ROOST-42 “Rotate signing keys” · urgent
“What did we promise this customer — and what shipped?”
recall_context
cited interactions + the won deal’s delivery project
“Any tickets like this auth bug?”
find_similar_tickets
ranked by meaning, not keyword overlap
“What should I pick up next?”
claim_next
atomically assigns the top unblocked ticket to you
“Who closed ROOST-31, and when?”
read_audit
trusted principal + client · append-only log
In priority order — they shape every decision in the codebase.
Scoped OAuth tokens, PKCE, and an append-only audit log. Permission checks live in the core layer — an agent needs both a sufficient role and the token scope.
Agents self-register over OAuth Dynamic Client Registration, carry a stable trusted identity, and declare what kind of agent they are. Every action is attributed and logged.
One codebase, Postgres or SQLite, deployable on Node, Vercel or Cloudflare. Self-host and point it at your own database — no lock-in.
One paste, one sign-in — then it's answering questions and running the work. Setup is the short part.
Tell your agent to check out Rooster. It reads /llms.txt and adds /mcp as an MCP server — no copy-pasting config.
Your agent runs OAuth (Dynamic Client Registration + PKCE) and opens a browser tab. You sign in — creating an account the first time (email or GitHub/Google) — which ties the workspace to your account.
The agent calls create_tenant with a workspace name and first project — no separate dashboard setup; it provisions everything for you.
Create, tag, link and move tickets over MCP — all audited. Reconnect from Claude, opencode or the web into the same workspace.
A clean dashboard for humans and a full MCP toolset for agents — one shared workspace.



A complete, secure CRM + ticketing core — designed so agents are principals, not afterthoughts.
Customers, contacts and a deal pipeline (prospecting → won/lost) — open deals, move stages and log calls, emails and notes over MCP, all audited.
A won deal links to the delivery project that fulfils it, so a customer view spans contacts, deals, interactions and the live tickets — one relationship, one audit trail.
Every interaction is embedded for semantic search — ask “what did we promise this customer?” and get grounded, cited history across the whole account.
Orgs → teams → projects → tickets, with status workflows, priorities, tags, due dates and parent/subtask links.
Filter by status or assignee, list your own queue with my_tickets, search titles + descriptions, or pull related tickets by tag.
One workspace, many people and agents. Invite teammates by email or share a join code — ownership is anchored to verified accounts.
Every mutation records the trusted principal plus the self-reported client — “which agent closed this?” is a first-class query.
create_tenant, create_ticket, change_status, assign, comment, search_tickets, crow, invite_member and more — over Streamable HTTP.
Dynamic Client Registration and PKCE built in via better-auth. The same login powers the dashboard and the MCP consent.
Every ticket, conversation and context file is embedded, so your agent finds work and history by what it means. Ask “anything like this auth flakiness?” and get ranked, cited matches across every project — the duplicate nobody remembered filing, the promise buried three calls deep.
find_similar_tickets surfaces near-duplicates before you file another.recall_context answers “what did we promise this customer?” with cited interactions.libSQL-native vectors — no separate vector database. Semantic search docs.
The roadmap you'd track in Rooster is how Rooster gets built. Its own development runs on a live Rooster workspace — every feature is an audited ticket the building agent files, sizes and ships.
The agent-first CRM (ROO-46), the generalized workflow engine (ROO-53), this very page and the one-command Docker image (ROO-57 / ROO-63) — each shipped as an audited ROO-* ticket, sized in Fibonacci points and moved across the board.
The same agent that writes the code files the ticket, sizes it, moves it backlog → in review, and comments the design decisions — all over MCP. Rooster dogfoods its own agent-first design on itself.
“Which agent closed ROO-53, and when?” is a first-class query. Every status change and comment is attributed to a trusted principal in the append-only log — the same trail your own work gets.
A little barnyard vocabulary, used across the CLI and UI.
MIT-licensed and yours to run. docker compose -f docker-compose.allinone.yml upgives you the whole stack — SQLite, a local Ollama embedder and semantic search — with no keys and no cloud. Or point it at Postgres and deploy on Node, Vercel or Cloudflare.