Standing desk
$480Bruno
Marked as Bruno's · automatically
00, Ravi
Ask in Slack for what you need, the way you'd ask a colleague. A team of AI agents plans it with you, builds the forms and trackers your team will use, and passes the work along until it's done. Ravi runs on a computer or server you control and joins your Slack as a bot you own.
Someone technical sets it up once. After that, your team works in Slack and a browser.
FOR EXAMPLE
# office
AnaWe keep losing purchase requests in DMs…
| Item · Amount · Status | ||
|---|---|---|
| Headset | $120 | Requested |
| Booth banner | $340 | Approved |
| Demo laptop | $1,890 | Ordered |
01, Ask
Ana needs a better way to handle purchase requests, so she asks in Slack. Each channel can have its own agent looking after it.
# office12 members
We keep losing purchase requests in DMs. Can we get one place where everyone files them, and finance approves?
Plan pending
Purchase requests: one place for everyoneWho uses it: your team at acme, signed in; no one outsideHow requests come in: a form on a pageWhere they're kept: one table, a row per requestWho sees what: everyone sees their own; supervisors see their team'sWhen one comes in: ops posts it to #finance with Approve and DeclineEvery week: a spend summary in a Slack CanvasWho does it: dev builds it, ops runs itCan't do yet: alert ops when someone comments on the page. Instead: a feedback form.
Agent: reception
Every Slack window and page on this site is an illustration of what Ravi sends and shows. The dark panels that show what an agent is doing are a picture of the work, not a screen in Ravi. Acme and its people are made up.
# office12 members
We keep losing purchase requests in DMs. Can we get one place where everyone files them, and finance approves?
YOUR AGENTS · ON YOUR COMPUTER OR SERVER
acme
CHANNELS
APPS
# office12 members
We keep losing purchase requests in DMs. Can we get one place where everyone files them, and finance approves?
Plan pending
Purchase requests: one place for everyoneWho uses it: your team at acme, signed in; no one outsideHow requests come in: a form on a pageWhere they're kept: one table, a row per requestWho sees what: everyone sees their own; supervisors see their team'sWhen one comes in: ops posts it to #finance with Approve and DeclineEvery week: a spend summary in a Slack CanvasWho does it: dev builds it, ops runs itCan't do yet: alert ops when someone comments on the page. Instead: a feedback form.
Agent: reception
Every Slack window and page on this site is an illustration of what Ravi sends and shows. The dark panels that show what an agent is doing are a picture of the work, not a screen in Ravi. Acme and its people are made up.
YOUR AGENTS · ON YOUR COMPUTER OR SERVER
Only people you allow can approve a plan. If nobody answers within five minutes, the card expires and the agent doesn't go ahead.
02, Build
The dev agent builds two things: the table that keeps every purchase request (Ravi Bases) and the page your team opens to file them (Ravi Pages). Nobody on your team writes code.
devbuilds things
Build purchase requestsfrom the approved plan
done
RAVI BASES
Purchase requests
THE RULES
Ravi applies these rules every time someone opens the page or files a request.
RAVI BASES KEEPS THE TABLE.
RAVI PAGES SHOWS THE PAGE.
Purchase requests
acme
REQUESTED
APPROVED
ORDERED
RECEIVED
DECLINED
# office
Done. File purchase requests at https://acme-ops.ravi.page/requests. Sign in with your Ravi account.
devbuilds things
Build purchase requestsfrom the approved plan
done
RAVI BASES
Purchase requests
THE RULES
Ravi applies these rules every time someone opens the page or files a request.
RAVI BASES KEEPS THE TABLE.
RAVI PAGES SHOWS THE PAGE.
Purchase requests
acme
REQUESTED
APPROVED
ORDERED
RECEIVED
DECLINED
# office
Done. File purchase requests at https://acme-ops.ravi.page/requests. Sign in with your Ravi account.
04, Pick Up
Bruno files his request and gets on with his day. A new request reaches the ops agent on its own within moments, without anyone forwarding it.
THE OPS AGENT WATCHES FOR
NEW REQUEST
Standing desk · $480
Sales · filed by Bruno
Needed by Oct 30
Every request still waiting
Carla's page shows it on its next refresh.
# finance
New purchase request
ItemStanding desk
Amount$480
Requested byBruno
TeamSales
Needed by Oct 30
05, Approve
Carla approves where she already works: in Slack. Try it. You're Carla.
CARD
# finance
New purchase request
ItemStanding desk
Amount$480
Requested byBruno
TeamSales
You're Carla. Approve or decline.
Needed by Oct 30
Approved by @Carla
Needed by Oct 30
1 reply
Approved by @Carla. Bruno's page shows it on its next refresh.
Decline request?
Bruno will see Declined on his page.
Carla presses Approve in #finance.
The ops agent checks it's Carla, marks the request Approved and updates the card.
Bruno's page shows Approved on its next refresh.
OPS
waiting for a clickworkingdone
Only Carla's click counts: the ops agent is set up to act on hers alone. Anyone else in #finance can press the buttons, but nothing changes.
RESULT · APPROVE
Purchase requests
Viewing as Bruno
↻ 30 s
REQUESTED0
Standing desk
$480
APPROVED1
Standing desk
$480
RESULT · DECLINE
# finance
Declined by @Carla
Needed by Oct 30
1 reply
Declined by @Carla. Bruno's page shows it on its next refresh.
Purchase requests
Viewing as Bruno
↻ 30 s
REQUESTED0
DECLINED1
Standing desk
$480
Loop closed
06, Block Kit
Your agents can post more than text: cards with buttons and forms (Slack calls these Block Kit), a Canvas they keep up to date, and task cards with their status. Press anything.
# finance
Weekly supplies order
Ana put together this week's office order.
Items12
Total$640
Requested byAna
Needed byFri, Oct 16
Office supplies · ordered every Friday
1 reply
Reject this order?
Ana will see it was rejected.
ops · runs things
Example: you press Approve
Buttons can hand the click to an agent or run a fixed step with no AI. Anyone in the channel can press them; Ravi says who pressed, and you decide whose clicks count.
# finance
Need something for work? File a purchase request.
New purchase request
Thanks! Monitor · $230 is filed.
ops · runs things
Example: you file the form
A button can open a form right in Slack. What people type goes to the agent you choose.
Who presses Approve?
# office
Plan pending
Plan: post a weekly spend summary to the #finance Canvas every Monday at 9.
Agent: reception
Nothing happens. Bruno can't approve plans.
reception · front desk
Example: Carla presses Approve
Plan pending
Plan: post a weekly spend summary to the #finance Canvas every Monday at 9.
When an agent asks for a yes on its plan, this is the card it posts. Only people you allow can approve.
# finance
Weekly spend
Week of Oct 12: 7 requests approved, $3,450.
| Team | Approved |
|---|---|
| Sales | $2,850 |
| Marketing | $340 |
| Support | $260 |
Waiting
ops · runs things
Example: the ops agent updates the Canvas
The ops agent keeps the Canvas up to date. It only goes one way: edits made by hand in Slack can be replaced the next time ops updates it.
# finance
RaviTask
Order: Standing desk
https://acme-ops.ravi.page/requests
ops · runs things
Example: the task card
A task card shows a request's status and priority right in Slack. Whoever sets up Ravi turns on one Slack setting for it.
07, Teams
Start with an agent of your own. Grow into a team of agents for everyone at work.
Start with one agent for yourself, in a Slack DM or a channel of your own. Sign in to Ravi once. Pages your agent makes are private by default: only your organization can open them, so if that's just you, only you can.
Signed in as Ana
Private · just youana-home.ravi.page/calendar
Most agents share one Slack bot. The reception and ops agents have their own, so they post under their own names.
acme-ops.ravi.page/requests
acme-sales.ravi.page/pipeline
Q3 pipeline · CSV812 rows
acme-product.ravi.page/bugs/new
People can file a bug but can't read anyone's. Ravi fills in who sent it.
acme-people.ravi.page/funnel
Ravi posts it into Slack. Edits made in Slack don't come back.
acme-public.ravi.page/spend
Just the numbers, with no table behind it. Anyone with the link can see it.
08, Plan First
For anything with several parts, your agents are told to read Ravi's playbook first. It walks them through six questions, and they show you the answers as a plan.
Plan · purchase requests
When something isn't possible yet, the plan says so and offers what works instead.
09, For Builders
Want your own app? Your developers can build a dashboard, an iPhone app or a Mac app on your agents and tables, with SDKs for TypeScript, Swift and Dart generated from the commands your agents use.
Ravi in the middle, connected to a team dashboard written in TypeScript, an iPhone app and a Mac app written in Swift. Dart and OpenAPI 3.1 are also available.
RAVI 750+ commands the ones your agents use
Team dashboard TypeScript
Approved this week
$3,450
Mac app Swift
iPhone app Swift
Summarize the open requests.
2 waiting, $350 in total: Headset and Monitor.
await ravi.sessions.send("ops", "Summarize the open requests.", { agent: "ops", wait: true })
One line from your app asks ops, the same agent your team talks to in Slack, and waits for its answer.
ZERO DRIFT
The SDK code in Ravi's repository is generated from the same list of commands your agents use. If the two ever differ by even one byte, the automated check fails.
TypeScript: @ravi-os/sdk on npm. Swift (for iPhone and Mac) and Dart: from the GitHub repository. About 35 commands stay on the command line only, and many results aren't fully typed yet. The connection your apps use is off until you turn it on, listens only on your own machine until you allow more, and each app needs a key you create for it. To reach it from a phone, set up your own secure tunnel. Apps act as the Ravi account signed in on that machine; they don't sign in each user.
10, Install
Setup is a one-time job for someone comfortable with a terminal. After that, your team only uses Slack and a browser.
Not the one who sets things up? Send this page to whoever is.
bun add -g ravi.botNeeds Bun and Node.js. Then run ravi setup: it installs what Ravi needs, asks for your Claude login or Anthropic API key, and starts Ravi. Then switch your first agent to Claude; the README shows how. (Setup asks its questions in Portuguese for now.)
Create a Slack app for your workspace and connect it to Ravi. You'll need permission to add an app to your Slack workspace. There's no one-click install yet; the README on GitHub links to the step-by-step guide. On Linux, Ravi keeps your Slack keys in Vault, so you'll need one.
Give a channel to your first agent and choose what it may do, such as building pages and posting in Slack. Then ask, the way you'd ask a colleague. To publish pages and tables, sign in to Ravi once.
Your agents run on your own computer or server and use Claude over the internet, so they work while that computer is on. Pages and tables are hosted by Ravi online; pages open at ravi.page. Your agents use your own Claude login or Anthropic API key, so AI usage counts there. Plan cards need agents that run on Claude. Task cards need Work Object Previews turned on in your Slack app.