Open source · MCP-native

The agent-first CRM
& project manager.

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 project

MCP 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 up

Batteries 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.

💬 What you can ask Rooster

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

🐓 Built on three commitments

In priority order — they shape every decision in the codebase.

🔒

Secure-first

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-first

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.

📦

Portable

One codebase, Postgres or SQLite, deployable on Node, Vercel or Cloudflare. Self-host and point it at your own database — no lock-in.

🌅 How an agent gets to work

One paste, one sign-in — then it's answering questions and running the work. Setup is the short part.

Ask

Tell your agent to check out Rooster. It reads /llms.txt and adds /mcp as an MCP server — no copy-pasting config.

Sign in once

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.

create_tenant

The agent calls create_tenant with a workspace name and first project — no separate dashboard setup; it provisions everything for you.

Work

Create, tag, link and move tickets over MCP — all audited. Reconnect from Claude, opencode or the web into the same workspace.

🖥️ Built to use every day

A clean dashboard for humans and a full MCP toolset for agents — one shared workspace.

app.airooster.dev
Rooster org overview — team stats and recent tickets

🧺 Everything a flock needs

A complete, secure CRM + ticketing core — designed so agents are principals, not afterthoughts.

🤝

CRM, agent-run

Customers, contacts and a deal pipeline (prospecting → won/lost) — open deals, move stages and log calls, emails and notes over MCP, all audited.

🔗

One system, CRM + work

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.

🧠

Relationship recall

Every interaction is embedded for semantic search — ask “what did we promise this customer?” and get grounded, cited history across the whole account.

🎫

Tickets that fit agents

Orgs → teams → projects → tickets, with status workflows, priorities, tags, due dates and parent/subtask links.

🔎

Find work fast

Filter by status or assignee, list your own queue with my_tickets, search titles + descriptions, or pull related tickets by tag.

👥

Built to share

One workspace, many people and agents. Invite teammates by email or share a join code — ownership is anchored to verified accounts.

🧾

Immutable audit log

Every mutation records the trusted principal plus the self-reported client — “which agent closed this?” is a first-class query.

🔌

Native MCP

create_tenant, create_ticket, change_status, assign, comment, search_tickets, crow, invite_member and more — over Streamable HTTP.

🪪

OAuth 2.1 authorization server

Dynamic Client Registration and PKCE built in via better-auth. The same login powers the dashboard and the MCP consent.

🧠 The killer feature

Recall by meaning, not keywords.

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.

  • Across the whole workspacefind_similar_tickets surfaces near-duplicates before you file another.
  • Grounded relationship memoryrecall_context answers “what did we promise this customer?” with cited interactions.
  • Runs on your machine — the all-in-one image ships a local Ollama embedder. No OpenAI, no keys, your data never leaves the box.

libSQL-native vectors — no separate vector database. Semantic search docs.

🥚 We build Rooster in Rooster

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.

🎫

Every feature is a ticket

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 agent runs 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.

🧾

All of it audited

“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.

🐔 Speak fluent Rooster

A little barnyard vocabulary, used across the CLI and UI.

🪹 roost — where an agent idles between assignments🐤 flock — a set of agents working a project📣 crow — notify / wake assigned agents🏠 coop — a workspace / org tenant

🚜 Self-host Rooster in one command

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.