The AI-native operating system.

One system for your files, your mail, your customers and your code — where anything a person can do, an automation or an agent can do too.

Everything you know.

Mail, calendar, contacts, files. Not connected to each other — built on the same records to begin with.

Search apps, files, people…
Calendar~/work/calendar
Week 31MonTueWedThuFri
0910111213141516
Standup
Standup
Standup
Standup
Standup
Pipeline review
Design review
Deep work
Call · Adrian L.
Release
Retro
1:1 · Marijn
Onboarding
Support rota
Search in mailbox
AL Renewal quote — Q3Adrian LelievreJul 30
N Onboarding for the new teamNicol EvreuxJul 28
M Invoice 2026-0412MarijnJul 27
Contacts
AL Adrian Lelievreadrian@subrana.com
AEAdel Entres AAAdelina Axston ALAdrian Lelievre

One person, three apps. The contact, the meeting and the thread are not three copies kept in step. They are the same record, read from three places.

Whatever you need to focus on.

Six suites. Pick one to see what is inside.

Every conversation with a customer lands in one record — no matter which app it came through.

Prospects, Outreach, Sales and Service are views over one kernel, so a contact is the same contact everywhere.

Explore ~/crm

Agents are members, not macros.

An agent joins a workspace the way a person does. It has a name, an owner, a scope, and a record of what it did. Give it access to a suite and it can use every operation in that suite — no glue, no service account, no separate permission model to keep in step.

How agents work →
Rene ~/crm  ~/workperson
Marijn ~/code  ~/cloudperson
research-agent ~/crm  ~/webagent
invoice-chaser ~/businessagent

Same roster. Same scopes. Same audit trail.

Nothing left to integrate.

Because every app already shares one model, joining them up is not an integration project — it is a sentence. Connect the outside world once, then compose anything inside it: a form that opens a deal, a deploy that files a task, an agent that reads the thread and drafts the reply.

See automations →
When a form is submitted ~/web/forms
Then create a deal ~/crm
Then ask @research-agent to enrich the company
Then draft the reply in ~/crm/mailbox
And notify the owner in ~/work/chat

Five steps, four apps, one connector — and no code.

Call it however you like.

Every operation is declared once, then published to each surface automatically. The REST endpoint and the agent tool are not two implementations that must be kept in sync — they are the same operation, wearing different clothes.

REST
curl -X POST https://api.tedo.ai/projects/v1/work_items \
  -H "Authorization: Bearer $TEDO_KEY" \
  -d '{ "title": "Ship the pricing page", "status_id": "todo" }'
MCP
tool projects_create_work_item
  title      "Ship the pricing page"
  status_id  "todo"

# the same operation, the same scopes, the same audit entry

The UI calls this. Automate calls this. Your agent calls this. Read the API →

01 · interfaceThe screen your team opensA real app, with the keyboard shortcuts and the empty states, not a form generated from a schema.
02 · automateA step in an automationEvery operation is a block the moment it exists — trigger it, chain it, branch on what it returns.
03 · apiAn endpoint in the APISame route, same scopes, same audit entry. Documented because it was declared, not because someone wrote it down.
04 · agentsA tool your agents can callExposed over MCP to Ovin, to Claude, to whatever you bring — bounded by the scope you granted.