Blocks
A block is YAML an agent writes; the runtime draws it as HTML and as Markdown.
15 blocks, 8 screens built from them, 7 screens of the Ocean app and 17 of Ocean Base's console.
Blocks
Each block has a contract an agent reads, live examples and a JSON Schema.
Closed per hour today
ClosedHanded off Opened by M. Okafor from the portal
· portal
Network agent pushed the corrected VPN profile
· Network agent
Requester confirmed the fix
· M. Okafor
columns
Puts two to four blocks side by side in equal shares, such as a chart and the events that explain it; they stack on a narrow screen.
VPN drops every 20 minutes
Closed by the Network agent; the requester confirmed the fix.
The agent matched a known pattern, pushed the corrected profile and replied.
Open the ticketcard
Groups a few blocks under one title and an optional line of description, such as a ticket at a glance and its next step.
Evidence for the auditor
heading
Names a section of a screen in a few words, so a person scanning the page finds it.
"Needs a person" is a status, not a failure: the ticket moves to a person and is never metered.
text
A paragraph of plain text that explains what a person is looking at, such as what "Needs a person" means.
VPN drops every 20 minutes
Reported from the portal by M. Okafor. The Network agent matched a known pattern (idle timeout on the split-tunnel profile), pushed the corrected profile and replied.
markdown
Formatted text with headings, lists, links, bold and code, written inline or read from a row, such as a ticket's body.
Open
214
Agents working
131
Need a person
27
Median first reply
4m 12s
kpis
One to eight figures side by side, each with a label, such as open tickets, agents working and median first reply.
Closed per hour today
ClosedHanded off chart
Draws a source's rows as an area, line, bar, donut or spark chart, such as tickets closed per hour or where the money goes.
grid
Rows a person searches, filters, sorts, selects and acts on, such as every open ticket and who is working on it.
Opened by M. Okafor from the portal
Device, office and last 10 VPN events attached
· portal
Network agent read the ticket and the VPN logs
Matched a known pattern
· Network agent
Requester confirmed the fix
· M. Okafor
timeline
What happened, in time order, such as everything an agent did on a ticket, with who did it and how it went.
Expense tool
Renews on 1 December
Remote support seats
Renews on 15 January, 40 seats
list
A short list of lines, each a title with an optional subtitle and link, read from a source or written as items.
- Open the agents
Apps agent
Hand-offs tripled after the expense tool update on Monday; 94 tickets went to people instead.
callout
A message a person must notice, such as a warning that an agent's hand-offs tripled, with an optional link to act on it.
- Yearly cap used · $37,900 of $140,00027%
progress
One figure as a bar toward a limit, such as the yearly cap used or how much of an agent's budget is gone.
form
Fields a person fills in to add a row to a table or change one, such as a new agent's rules or a ticket's status.
button
One link that starts the next step, to a screen of this app or a URL, such as Build an agent.
New starter laptop for R. Patel
Procurement agent
approval
One card per row waiting for a decision, with Approve and Reject, such as an order an agent may not place on its own.
Screens built from blocks
App UI apps written in YAML, drawn here from their example rows; each is live on App UI.
Open
214
Agents working
131
Need a person
27
Median first reply
4m 12s
Closed per hour today
ClosedHanded off Two monitor arms offered
Waiting for K. Weber to choose
· Procurement agent
Requester confirmed the fix. Closed.
No person touched the ticket
· M. Okafor
Badge reader restarted
Floor 3 lobby reads badges again
· Facilities agent
Agent pushed the corrected profile and replied
Allowed by policy: change VPN profiles, no admin rights
· Network agent
Network agent read the ticket and the VPN logs
Matched a known pattern: idle timeout on the split-tunnel profile
· Network agent
Opened by M. Okafor from the portal
Device, office and last 10 VPN events attached automatically
· portal
Added to the sales group
The group owner's standing approval
· Identity agent
Handed to a person
No known fix since Monday's expense tool update
· Apps agent
Service desk · Queue
Every ticket open now, and who is working on it
"Needs a person" is a status, not a failure: the ticket moves to a person and is never metered.
Service desk · Agents
The agents that work this queue, listed like colleagues
- Last test run closed the same way a person did · 83 of 10083%
Ready to turn on
Test run: 83 of 100 procurement tickets closed the same way a person closed them.
Service desk · Build an agent
Plain language, hard limits. The builder is free.
Metered results
$6,140
so far this month
Prepaid minimum
$3,000
covered on the 9th
Cost per closed ticket
$1.28
all-in
Closed without a person
61%
Yearly cap used · $37,900 of $140,00027%Where the money goes this month
Tools we still rent
Zendesk Guide
$1,200 a month · renews 2026-12-15 · knowledge base only
ServiceNow (read-only archive)
$2,100 a month · renews 2027-01-31 · 4 seats used of 40
PagerDuty
$800 a month · renews 2027-03-01 · on-call for two people
Agent Closed Needs a person (%) Metered ($) Budget Signal Identity 1120 4 2240 no limit steady Network 860 9 1720 no limit steady Apps 640 22 1280 no limit hand-offs up 3x since Monday Procurement 450 12 900 $120 model cost budget 80% used Facilities 0 0 0 $60 model cost steady Open the agentsApps agent
Hand-offs tripled after the expense tool update on Monday; 94 tickets went to people instead. Retest the agent on this week's tickets.
Forecast
$7,300 of results by month end. At this rate the yearly cap is reached in month 23, not this year.
Service desk · Cost control
Everything the company spends on this work, in one place
Policy Applies to Rule State Data stays in region all agents Models and storage in the EU only; US models blocked enforced No admin rights all agents Agents may change user settings, never roles or groups enforced Personal data Identity, HR Health and salary fields masked before any model call enforced Money Procurement Orders over $500 need a named approver enforced Outside email all agents No messages leave the company domain enforced Retention audit log 7 years, immutable, exportable enforced Last 30 days
No policy violations. Three blocked attempts, all outside email, each logged with its ticket.
Evidence for the auditor
Service desk · Compliance
Who did what, what they were allowed to do, and where the data went
VPN drops every 20 minutes
Reported from the portal by M. Okafor. Device, office and the last 10 VPN events were attached automatically.
The Network agent matched a known pattern (idle timeout on the split-tunnel profile), pushed the corrected profile and replied. The requester confirmed the fix; no person touched the ticket.
Nothing is waiting for you to decide. New requests show here.
Opened by M. Okafor from the portal
Device, office and last 10 VPN events attached automatically
· portal
Network agent read the ticket and the VPN logs
Matched a known pattern: idle timeout on the split-tunnel profile
· Network agent
Agent pushed the corrected profile and replied
Allowed by policy: change VPN profiles, no admin rights
· Network agent
Requester confirmed the fix. Closed.
No person touched the ticket
· M. Okafor
72-hour hold
A ticket an agent closed is counted as a result only after 72 hours without a reply from a person. If it is reopened, it is not counted.
Service desk · Ticket
Everything an agent did on this ticket, and what it was allowed to do
Today
Three figures from one row of data. Change this file and run app-ui apply to publish it again.
Visitors
1,284
Sign-ups
37
Conversion
2.9%
Hello · Hello
The smallest App UI app
Each block says what it is for and when to use another, the props it takes, the data it reads, the actions it offers and how it looks in each state. Agents read the same contract at /llms.txt.
App UI blocks · Blocks
Every block an App UI screen is made of, with its contract
The Ocean app
The Ocean application on the Mac, drawn by Ocean UI's native face.

Dashboard
How the work is landing today, with what needs a person first.

Activity
What changed on Ocean Git, newest first, by whom and when.

Chat
The coding agent's thread over Ocean's code and documents.

Code
A file of an Ocean Git repository, highlighted, with ⌘K to jump.

Commit
A commit's changes, file by file.

Environments
Which landed commit each Worker runs, per environment.

Shell
The window's sidebar, top bar and ⌘K palette.
Ocean Base console
Ocean Base's console, rendered in Rust from the same Ocean UI parts, on example data.
Databases
Every database of your org; each is one YAML schema and its own store.
Databases
Every database of the organization, with its tables and size.
Databases
Every database of your org; each is one YAML schema and its own store.
No databases yet. Create one from a kind: database YAML with oceancode base create or POST /v1/databases.
Databases, none yet
The first visit: what a database is and how to make one.
leads
eu · schema version 3 · created 2026-10-30T08:00:00Z
Token minted
Send it as Authorization: Bearer <token>.
Shown once; copy it now.
obt_secretvalue
Rows read
12,480
last 31 days
Rows written
310
last 31 days
Requests
950
last 31 days
Storage
48.0 kB
tables, documents, KV
Files
2.5 MB
on R2
Collections
Tokens
Database tokens (obt_…) with a role; the token is shown once.
Label Role Created Expires ci deploy write 2026-10-30T08:10:00Z never — read 2026-10-29T08:10:00Z 2026-11-29T08:10:00Z revoked 2026-10-30T09:00:00Z Publishable key
The obp_… key apps ship to sign end users in and read public-read collections. Rotating stops the old one at once.
Restore
Back to any moment of the last 30 days, or to a saved restore point. Everything after it is undone (the restore itself can be undone).
The restore point now (save it to come back here later):
0000006b-00000000-00004f3a
Export
The whole database or one collection, as a link valid for an hour.
Database
One database: its tables, documents, files and keys at a glance.
leads
Rows in the database's order; sort and filter on indexed columns.
Rows
A table's rows, sorted, filtered and paged from the address.
Schema
Version 3. One YAML is the only way the database's shape changes.
Not applied
this change can lose data; send it again with allow: destructive to apply it
Plan
# Change SQL 1 add column leads.tier ALTER TABLE "leads" ADD COLUMN "tier" TEXT 2 drop column leads.notes ALTER TABLE "leads" DROP COLUMN "notes" destructive Change
Applied YAML
kind: database name: leads residency: eu collections: leads: access: owner columns: name: text required email: text unique status: text = new score: integer owner: user indexes: [status] pages: kind: documents access: public-read settings: kind: kv files: true auth: methods: [email, anonymous] redirects: [https://app.example.com/auth/callback] channels: [lobby, "room:*"]Schema
The tables, columns and indexes the YAML declares.
SQL
Statements run in one transaction. Read mode refuses writes; no DDL (change the schema instead).
Query
rows_read 3 · rows_written 1
SELECT name, score FROM leads WHERE note = 'a;b'
1 rows · rows_read 2 · rows_written 0
name score Ada 72 UPDATE leads SET score = 1 WHERE id = 2
0 rows · rows_read 1 · rows_written 1
No rows. SQL
A read-only query and its rows.
pages
Documents by path; open one to read or edit it.
Documents
A collection's documents, newest first.
guides/a b.json
application/json · updated 2026-10-30T08:00:00Z
JSON
{ "n": 1, "title": "Hi </pre><script>x</script>" }Edit
Document
One document as formatted JSON.
new.md
No document here yet
Saving creates it.
Edit
Document not found
What the console says when a document is gone.
settings
Keys and values; a key with a TTL disappears when it expires.
Key-value
The keys of a namespace and their values.
Files
Stored on R2 under this database; upload and sign links over /v1/…/files.
20.5 kB on this page.
Files
The files in a bucket, with size and type.
Users
The end users who sign in to apps on this database.
Delete this user?
ada@example.com (u1) is signed out everywhere and removed. What the user owns stays.
Users
The end users who sign in to the database's apps.
Calendar
The next 30 days, each event in its own time zone.
Event added
Standup is on the calendar.
New event
Start and end are times in the time zone, like 2026-11-02T09:00. Repeat is an RFC 5545 rule.
Delete event removes every occurrence of the event at once and mails its attendees a cancellation.
Monday 2 November
Time Event Calendar 09:00–09:15 UTC+01:00 Standup Team 12:00–13:00 UTC Lunch with Ada Personal Tuesday 3 November
Time Event Calendar 10:00–10:15 UTC+01:00 Standup edited Team Calendar
The next 30 days of the database's calendars, grouped by day, with a form for a new event.
Mail
Inboxes on plungeai.dev and the mail they receive.
New message
Pricing
From To Cc Received Scan grace@example.com leads.support@plungeai.dev ada@example.com 2026-11-01T09:00:00.000Z clear Hi, Could you send the price list? GraceAttachment Type Size brief.pdf application/pdf 48.0 kB Inboxes
Address Kind Owner Created leads.support@plungeai.dev agent — 2026-11-01T08:00:00.000Z leads.ada@plungeai.dev person u1 2026-11-01T08:05:00.000Z Mail
The database's inboxes and their messages, newest first; a held message shows its scan verdicts.
Webhooks
Declared in the schema's webhooks:; each delivery is signed and retried three times.
Deliveries to https://example.com/hooks/base
The newest 100 attempts.
At Event Attempt Status Outcome Took Delivery 2026-10-30T08:05:00Z leads.insert 1 200 delivered 84 ms msg_1 Webhooks
Where change events are delivered, and how it went.
Branches
Copies of this database to change safely, then promote or drop.
Branched
leads@feature is a copy.
New branch
Copies rows, documents, keys, end users and files.
Branch State Code feature can be promoted ocean-git://ocean-platform@refs/heads/ada/feature Open old parent moved 7 changes — Open What feature changed
The schema changed too.
Collection Inserted Updated Deleted leads 3 1 0 pages 0 0 2 Branches
Branches of the database, their diff and promote.
Error
A failed read, said plainly, with the way back.