No matter what your AI does – text, image, sounds or video – Vobo helps you review its products before slop goes live.
Each Vobo queue receives input and output of your model and lets your reviewers check it against policy. All decisions are stored in a hashed chain of evidence and can be POSTed wherever you want.
We don't replace your eval tools. We make human review convenient, so you don't footgun yourself.
The name comes from visto bueno (V°B°) — the Latin-American sign-off “seen-good”.
vobo.dev · Docs · X · LinkedIn
- Anchored comments. A comment sticks to a place in the artifact. It stays across versions until someone resolves it.
- Data in and data out. HTTP, MCP, and webhooks. You POST an artifact. You get a signed decision back.
- Hotkeys. The station is built for the keyboard.
⌘↵ships a verdict. - Access control. Admin and reviewer roles on every plan.
- Text now, image WIP. Sound and video are on the roadmap.
- Retrievable traces. Every decision is on a hash chain. You can pull the full record.
flowchart TD
create["create review"] --> open["open"]
open -->|claim| claimed["claimed"]
claimed -->|verdict| accepted["accepted"]
claimed -->|verdict| rejected["rejected — awaiting version"]
claimed -->|verdict| escalated["escalated"]
rejected -->|submit version| open
create review is an idempotent upsert on the caller's request id. submit version never creates a request. accepted is terminal: do not regenerate it.
Sign up on vobo.dev.
Free is capped at 1 queue, 5 users and 1 000 reviews a month. Paid is $0.10 per human review and capped at 20 queues without seat or review caps. All integrations are free besides verbatim log drain (on the roadmap).
The LLM judge is on the roadmap. It will be free on any plan when you bring your own key. Paid will also let you use our tokens, charged per review.
Setup is in the docs.
Open-core self-host is capped at 20 queues. If you need more than 20, write to v@vobo.dev for an enterprise licence.
You need Node.js 22+, pnpm, and Postgres.
git clone https://github.com/getbeton/vobo.git
cd vobo
pnpm install
cp .env.example .envSet AUTH_SECRET (openssl rand -base64 32) and POSTGRES_URL. Then:
pnpm db:migrate
pnpm db:seed # prints the admin password and API key once
pnpm dev # http://localhost:3000
pnpm worker # webhooks, lease expiry, SLA sweep — second processpnpm db:seed writes one workspace, the default queue, and one project-scoped API key. Store the key. It is not shown again.
Without RESEND_API_KEY, magic links print to the server log. That is enough for local work.
Production topology, Railway, and DNS live in DEPLOY.md.
Same contract on every path. Ids belong to the caller and must be deterministic.
| Path | Use when |
|---|---|
HTTP Bearer on /api/v1/reviews, /api/v1/versions, /api/v1/corrections, /api/v1/review, /api/v1/cursor |
Any pipeline |
MCP request_review, submit_version, list_reviews, get_review, get_corrections, get_cursor, set_cursor |
An agent in a terminal. Full-loop parity with HTTP |
| Webhooks Standard Webhooks signing, retry 10s / 60s / 180s, then DLQ | You have a server that can receive events |
A consumer with no server pulls. changed_since takes an event-id cursor that Vobo stores per API key. awaiting_version is the regeneration work list. Two copies of the same agent cannot drift: there is no local cursor.
Point the MCP server at an instance:
export VOBO_API_URL=http://localhost:3000
export VOBO_API_KEY=vobo_sk_…
pnpm mcp| Channel | Best for |
|---|---|
| vobo.dev/docs/quickstart | How to use the station |
| GitHub Issues | Bugs and errors in this repo |
| X | Product notes |
| Company notes |
Open a pull request against staging. Run pnpm test first.
Do not invent UI. The prototype in design/ is the spec.
These projects run the station. Thank you.
| Project | In Vobo | Links |
|---|---|---|
| Next.js | The app | repo |
| React | UI | repo |
| Drizzle | Schema and queries | repo |
| Better Auth | Sessions and magic links | repo |
| MCP TypeScript SDK | The MCP server | repo |
| Zod | Request and event shapes | repo |
| Tailwind CSS | Layout | repo |
| postgres.js | Postgres client | repo |
| pg-boss | Jobs: webhooks, leases, SLA | repo |
| Radix UI | Accessible primitives | repo |
| Lucide | Icons | repo |
| SWR | Client data | repo |
| Vitest | Tests | repo |
| approx-string-match | Re-anchoring after a rewrite | repo |
VOBO Oversees Bullshit Output. 2026-singularity.