The open-source alternative to Claude Tag!
Quickstart · Docs · Field guide · How it works · Releases · Contributing
Start a task in Slack, or hand one over from Claude Code, Codex or Cursor. A remote Pi coding agent works on it in a persistent, isolated EC2 workspace in your AWS account. When it finishes, Rovara reports which checks passed, failed, or could not be verified. When you're ready, it opens a pull request for a person to review and merge. Rovara has no merge path.
Your team delegates from where it already works. Your AWS account runs the work.
Naming: Rovara was called AgentX. Commands, AWS resource names, paths, tool names and the default Slack app name still use
agentxorAgentX(for exampleagentx init,AgentXControlPlane,~/.agentxand@AgentX), so every command in these docs works as written.
| Step | Example | |
|---|---|---|
| 01 | Install in your account | agentx init sets up the stacks, a GitHub App, a Slack app and your first project. |
| 02 | Bind a project | Point a Slack channel at a project: its repositories, setup steps and readiness checks. |
| 03 | Delegate and review | "@AgentX fix the navigation bug." Start the suggested Quick or Full path, approve the plan, then review the draft PR. |
| Start tasks from | Slack | Claude Code | Codex | Cursor |
| Connects to | GitHub | Linear | Jira | Asana |
| Models from | Amazon Bedrock | OpenRouter | Anthropic | OpenAI |
Plus any other remote MCP server, such as Sentry or PagerDuty.
- ✅ You want a coding agent your whole team can use from Slack, without anyone's laptop staying on
- ✅ You want every task to run on its own isolated machine, not on a developer's computer
- ✅ You want the agent, its code and its credentials inside your own AWS account
- ✅ You want a thread to pick up where it left off, with its files and conversation intact
- ✅ You want each run to end with a check report, not just the agent's word that it's done
- ✅ You use Claude Code, Codex or Cursor and want to hand off long tasks and share them with the team
- ✅ You want a person to review and merge every pull request
| Each Slack thread owns its own EC2 worker and encrypted EBS volume. Threads run in parallel; requests in one thread run in order. | Files and conversation live on the thread's volume. The idle reaper stops compute and keeps the disk, so the next mention resumes. | When the agent finishes, Rovara reruns the project's readiness checks, or the agent's own test commands, and reports what passed, failed, or could not be verified. |
| Opens and maintains PRs. Configured CodeBuild gates run against the candidate commit. A person merges; Rovara never force-pushes. | The Slack orchestrator has no shell or file tools. All coding happens in the remote worker, inside that thread's workspace. | Reads run. Closing, deleting, merging and large changes ask first, with Approve and Cancel buttons. Administrators add their own rules. |
| GitHub (through GitHub's MCP server), Linear, Jira, Asana, or any other remote MCP server. Only the tools a project approves are offered. |
agentx mcp gives Claude Code, Codex or Cursor 11 tools to start, check, continue and share Rovara tasks.
|
Bedrock by default, or OpenRouter, or your own Anthropic or OpenAI key. @agentx use Fast switches models per project.
|
agentx init shows what it will create and an estimated monthly cost first, and resumes where it stopped. upgrade, doctor and destroy handle day 2.
|
A project can name a devcontainer. It runs on the worker's own Docker, with the workspace mounted at the same path. |
Every turn leaves a record of the tools called and why. A Details button shows it in Slack; agentx admin turns export exports it.
|
| Without Rovara | With Rovara |
|---|---|
| ❌ A coding agent only runs while someone's laptop is open, and only that person can see it. | ✅ It runs in your AWS account. Anyone in the channel can follow the thread and steer it. |
| ❌ Two tasks on one checkout trip over each other's changes. | ✅ Every thread has its own machine and disk. |
| ❌ Picking a task back up next week means rebuilding the context by hand. | ✅ The thread's files and conversation are still on its volume. Mention it again and it carries on. |
| ❌ The agent says "all tests pass" and you can't tell whether it ran any. | ✅ Rovara reruns the checks itself and reports what passed, failed, or could not be verified. |
| ❌ Handing an agent your GitHub token and hoping it doesn't close the wrong issue. | ✅ Tokens stay in the control plane, and destructive actions wait for the requester to approve them. |
| ❌ Idle cloud machines quietly run up the bill. | ✅ The idle reaper stops compute and keeps the disk. Per-member and per-organization limits cap open workspaces. |
| Check outcomes, stated plainly. | A run with no usable checks, or one that stops before verification, is reported as not verified, never as passing. |
| A person merges. | Rovara can open, update, replace and revert pull requests. It has no merge path. |
| The orchestrator can't touch code. | The hosted Slack agent has orchestration and approved connector tools only. Source, edits and shell live in the remote worker. |
| Credentials never reach the worker. | The GitHub App key stays in Secrets Manager. Rovara mints short-lived, single-repository tokens for each clone, push and PR. |
| Tool output can't approve itself. | The model that checks a change sees only the members' messages and the call, never what a tool returned. |
| Memory fails closed. | If a thread's volume is lost, the next request fails with CONVERSATION_STATE_LOST instead of starting over on files it doesn't know. |
| Fenced closure. | Closing a workspace is refused while it holds uncommitted, untracked or unpushed work. |
Slack thread Claude Code · Codex · Cursor
│ │ agentx mcp
▼ ▼
┌─────────────────────────┐ ┌──────────────────────────────────────┐
│ Slack ingress (Lambda) │ │ CONTROL PLANE │
│ → SQS → Slack service │──────▶ │ │
│ (ECS Fargate) │ │ ┌──────────┐ ┌──────────┐ ┌───────┐ │
│ │ │ │ Broker │ │Connector │ │ PRs │ │
│ Hosted Pi orchestrator │ │ │ API │ │ gateway │ │& gates│ │
│ + action gate │ │ └──────────┘ └──────────┘ └───────┘ │
│ no shell, no files │ │ ┌──────────┐ ┌──────────┐ ┌───────┐ │
└─────────────────────────┘ │ │Dispatcher│ │ Session │ │ Idle │ │
│ │ & queue │ │ manager │ │reaper │ │
│ └──────────┘ └──────────┘ └───────┘ │
└──────────────────┬───────────────────┘
│ signed invocation
┌─────────────────────────────┼─────────────────────────────┐
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ EC2 worker │ │ EC2 worker │ │ EC2 worker │
│ Pi coding │ │ Pi coding │ │ Pi coding │
│ agent │ │ agent │ │ agent │
├─────────────┤ ├─────────────┤ ├─────────────┤
│ EBS volume │ │ EBS volume │ │ EBS volume │
└─────────────┘ └─────────────┘ └─────────────┘
thread A thread B task from Cursor
|
Slack service ( |
Control plane ( |
|
Coding worker ( |
Session lifecycle: The dispatcher signs each invocation; the session manager and Step Functions provision, resume and delete workers; the idle reaper stops compute and keeps the volume; the reconciler cleans up stuck cancels. |
|
Connector gateway ( |
Developer MCP server ( |
|
CLI and installer ( |
Infrastructure ( |
| Not proof that the code works. | The check report says what the available checks showed. It is not proof that a change is correct. |
| Not an auto-merger. | It opens and maintains pull requests. A person reviews and merges them. |
| Not a hosted service. | You install it in your AWS account. There is no Rovara account to sign up for. |
| Not a local agent. | Nothing runs on a developer's machine except the CLI. The old local and Socket Mode modes are retired. |
| Not an agent framework. | It runs the Pi coding agent for you. It doesn't ask you to build one. |
- An AWS account where you can create IAM roles, ideally one used only for Rovara
- A GitHub organization or personal account to own Rovara's GitHub App
- A Slack workspace where you can create and install apps
- Model access: Amazon Bedrock in your region, or an OpenRouter, Anthropic or OpenAI API key
Press the button, enter your email, your GitHub owner and an install name, and press Create stack. An email with your temporary password and the setup page's address arrives in about five minutes. The setup page asks everything else: it builds Rovara in your account, then connects GitHub and Slack and ends at the bot's first reply in your channel. Nothing is installed on your computer.
To install from a terminal instead, with Node.js 22.19 or newer (Node 22 LTS recommended):
export AWS_PROFILE=<an admin profile for the target account>
npx @preplabsai/rovara-code init --env <name>On your own computer, init opens an install page in your browser (served only from 127.0.0.1).
Pass --no-ui to stay in the terminal. See Installing Rovara for both ways, and
Other ways to install for the CDK, a platform team, or a source checkout.
In the bound channel:
@AgentX Add password reset to the account page
A plain @AgentX request is routed first. AgentX asks its small safety-check model (the classifier
model set at agentx init) whether the request is a question or a change:
- A question ("@AgentX what does retry.ts do?") is answered in the thread by the chat agent. No task is created.
- A small change gets a card suggesting Quick: AgentX writes a short coding plan for you to approve, then codes it, runs the checks and reviews, and opens a draft pull request.
- A bigger change gets a card suggesting Full: AgentX writes requirements, then a design, then a coding plan, and you approve each one before any code changes.
- Anything unclear (or when the model is slow, unavailable or gives an unusable answer) gets a card with Just answer, Quick and Full, each explained in one line.
Nothing that changes code starts without a click. On a suggestion card, press Start for the
suggested path, the other path's button to switch, or Just answer to send the request to the
chat agent instead. You can also reply quick, full or answer in the thread. Only the person
who asked can choose. To skip routing, start the request with a prefix: @AgentX quick: fix the typo on the pricing page or @AgentX full: add single sign-on start on that path, @AgentX workflow: ... asks Quick or Full without a suggestion, and @AgentX chat: ... goes straight to the chat
agent. When approving the coding plan, the task owner can choose extra project-approved checks;
required project readiness checks are always included.
To talk to the chat agent instead, start the request with chat::
@AgentX chat: inspect the project and implement the navigation fix. Run the relevant tests.
@AgentX chat: create a pull request for the personal-website repository titled "Improve navigation".
In a thread the chat agent is already answering, mention AgentX as before (no chat: needed), for
example @AgentX stop or @AgentX close this workspace.
Changed: a plain top-level
@AgentX <request>used to go to the chat agent. It is now routed: a question still reaches the chat agent, and a change gets a card suggesting Quick or Full in every bound channel. Addchat:to always reach the chat agent.
Every reply in a task's thread, from the owner or a teammate, is saved for the task's next step. Only the owner's buttons move the task on. After the coding plan is approved, the checks and reviews run on their own. If a review finds a problem, the owner can press Send back to coding. When everything passes, AgentX opens a draft pull request and posts the link in the thread.
Reinstall the Slack app on an existing install. Saving replies that do not mention AgentX needs the
channels:historyandgroups:historybot scopes and themessage.channelsandmessage.groupsevents. Update the app from the manifestagentx initgenerates, then reinstall it to the workspace. Until then only@AgentXreplies are saved. AgentX ignores channel messages outside task threads. See Replies in a Slack task's thread.
From your own machine (no AWS credentials needed):
agentx login <control plane URL>
agentx mcp install --client claude-code # or codex, cursorAfter the install, agentx --env <name> project add, channel add and
connector add linear|jira|asana|mcp add more, and doctor, config, upgrade and destroy run
the environment. See the install overview for the full tour and E2E setup for the connect, inspect and owner-decision flow.
Q: Does Rovara verify that the change is correct?
A: No. It reruns the checks it has (the project's readiness commands, or recognized test commands the agent ran) and reports what passed, failed, timed out, or could not be verified. A task with no usable checks is reported as not verified. A person reviews the pull request. What the check report means
Q: Do developers need AWS access?
A: No. Developers sign in with Slack, your company's sign-in (OIDC), or both. Only the installer and day-2 operators use AWS credentials.
Q: What does it cost to run?
A: AWS and model charges depend on your configuration and use. agentx init prints an
estimated monthly cost before it creates anything and sets a monthly budget with an alert. Idle
workspaces stop their compute and keep only their disk. By default each member can hold 3
workspaces and the organization 20.
Q: Where does my code go?
A: Onto EBS volumes in your AWS account, attached to workers in private subnets. The model provider you choose sees the prompts. Turn records keep redacted tool calls for 30 days; tokens, request text and response text are never written to CloudWatch Logs.
Q: What happens when a thread goes quiet?
A: The idle reaper stops the instance. The volume, with the thread's files and conversation, stays. The next mention starts compute again and carries on.
Q: Can I use it without Slack?
A: Developers can start and drive tasks from Claude Code, Codex or Cursor through
agentx mcp, and share them into Slack when they want the team to see. Administration happens in
the agentx CLI.
| Guide | What it covers |
|---|---|
| Install overview | init, day-2 commands and developer sign-in on one page |
| Installing Rovara | Published templates, CDK, platform-team export, CloudShell |
| Running Rovara | The operator role, doctor, upgrade, config, projects and connectors |
| How Rovara works | Request path, the check report, context files, usage records, stack names |
| Production architecture | EC2 workers, EBS, networking, devcontainers, isolation and release |
| Working in Slack | Threads, connectors, confirmations, shared tasks, memory, diagnostics |
| Administration client | Registering projects, binding channels, the full command surface |
| Project configuration | Every field of a project file, and how the checks work |
| Pull requests | Publication, maintenance, GitHub App permissions, CodeBuild gates |
| Use Rovara from your AI tool | agentx mcp for Claude Code, Codex and Cursor, and sharing to Slack |
| Rovara loop | Rovara's workflow on your GitHub issues, run locally by your own Claude Code |
| Model providers · your own key · Sign in with ChatGPT | Bedrock, OpenRouter, Anthropic and OpenAI, and each developer's own ChatGPT plan |
| Connectors: Linear · Jira · Asana · any MCP server | Credentials and setup per connector |
| SWE-bench evals | Running SWE-bench tasks against the coding agent from Slack |
| Removing an environment · Moving accounts | Teardown and migration |
| Releases · npm package | What a release contains, how one is cut, and the published package |
| Maintainers' production release | The maintainers' own deployment and release pipeline |
npm ci
npm run build # Build every package
npm run typecheck # Type-check the packages
npm run typecheck:all # Also tests/ and scripts/, against tests/typecheck-baseline.json
npm run lint # ESLint
npm test # Vitest (no Docker or AWS needed)
npm run infra:synth # Synthesize the CDK appSee Developing Rovara for the typecheck baseline, the spec documents and the GitHub Spec Kit setup.
- ✅ Hosted Slack orchestrator with one workspace per thread
- ✅ EC2 workers with persistent EBS volumes, idle reaper and reconciler
- ✅ Check report: readiness checks or replayed test commands, rerun after the agent finishes
- ✅ Pull-request lifecycle: create, append, sync, replace and revert
- ✅ CodeBuild gates on the candidate commit
- ✅ GitHub MCP, Linear, Jira, Asana and generic MCP connectors
- ✅ Action gate with confirmations, rules and a Details view
- ✅ Conversation continuity across turns
- ✅
agentx initinstaller, withupgrade,config,doctoranddestroy - ✅ Developer sign-in and tasks from Claude Code, Codex and Cursor
- ✅ Sharing tasks into Slack, view only or open to the channel
- ✅ Dev containers
- ✅ Per-project model choice: Bedrock, OpenRouter, Anthropic and OpenAI
- 🟡 Install page in the browser (phase 1 built; phases 2 to 4 next)
- ⚪ Admin tools for AI tools: reading Rovara's state (spec 025 phase 25d) and confirmed changes (25e)
- ⚪ Multi-repository change sets that test and publish several repositories together
- ⚪ First public release on npm and a public image registry
Contributions are welcome; see CONTRIBUTING.md. To report a vulnerability, see SECURITY.md.
Licensed under the MIT License. PrepLabsAI also preserves its prior Apache 2.0 grant for PrepLabsAI-owned Rovara work, including earlier releases; see RELICENSED.md. Third-party components retain their own licenses. © 2026 PrepLabs
The open-source alternative to Claude Tag!