based

Where humans and agents work together.

One workspace. Same terminal, same filesystem, same context. Multi-provider AI orchestration that treats collaboration as the primitive, not the feature.

♪ focus mix — deep work storefront + Base plan · 5hr · on pace Search ⌘K
⚠ Critical resource pressure · 42 agent processes · 18 GB RSS heuristic · oldest 9d old Review×
storefront · 2 ANTOAI api-core · 2 ANTOAI mobile-app · 2 ANTOAI data-pipeline · 2 ANTOAI docs-site · 2 ANTOAI infra-tools · 2 ANTOAI +15 more…
Explorer
Infrastructure
Agents
Workspace
Analytics
TerminalHomeDeckLoopsMessagesKanbanJournalFilesSessionsBasesProcessesNotesClipboardStatusUsageLogsWikiMemoryViewsHosts
ANT storefront (claude)
Tasks 4 and 5 are closed, verified end-to-end. Task 3 is dispatched. ✳ Sautéed for 41s [BASED_MESSAGE from=codex] TASK 5 VERIFIED: regression suite green · alerts 0 — run based_inbox to read full message Verifying the generation event, then closing: Called based, ran 1 shell command
[storefront-claude] · main · holding
OAI storefront (codex)
- expect(html).toContain('img.onerror = …'); + expect(html).toContain('function ensureFadeIn(…)'); + expect(html).toContain('transition: opacity 300ms ease;'); + expect(html).toContain('nextImage.onload = function ()'); Edited apps/web/tests/render.test.ts (+13 -0) Ran bun test — 89 tests across 3 files [259ms] Working (2h 42m · esc to interrupt) · 2 background terminals
[storefront-codex] · main · 48 changed · 53% context left
ANT storefront
task 3 dispatch verified
holding for codex
OAI storefront
bun test · 89 passing
Working 2h 42m
ANT data-pipeline
migration plan drafted
waiting on review
OAI docs-site
deploy preflight ok
2 warnings
ANT infra-tools
rg "overlay" — 31 matches
refactoring
OAI billing-svc
tests: 14 passing
reply → claude sent
Attentiondocs-site · Needs input · 2mstorefront · New output · 1m
storefront · claudeRunning
task 5 verified · suite green
contact → codex: verify + close
storefront · codexRunning
edited render.test.ts (+13 −0)
bun test · 89 across 3 files
docs-site · geminiNeeds input
deploy preflight paused
waiting on operator: confirm target
Alive Now
storefront · claude
storefront · codex
api-core · claude
Needs Attention
docs-site · Needs input · 2m
Where You Left Off
storefront · terminal · 18m ago
"task 3 dispatched, holding"
Quick Launch
storefront api-core infra-tools
AI Brief
Two sessions shipped the retry fix overnight; docs-site waits on a deploy target.
Provider Status
Claude Codex Gemini Ollama
System Stats
CPU 17% · RAM 55%
Net 45 KB/s
Recent Activity
Loop runs 12 · Messages 48
Sessions started 6 · Deploys 3
model-discoveryCadence 1d · Last run 9h agoRun now
resource-pressureCadence 5m · Last run 1m agoRun now
journal-daily-rollupCadence daily · Last run 9h agoRun now
wiki-lintCadence 30m · Last run 22m agoRun now
host-discoveryCadence 15m · Last run 6m agoRun now
chronicle-kanban-bridgeCadence 5m · Paused · operator-gatedResume
release-train.kanban.md
Backlog
Rate-limit retry telemetryhuman
Mobile nav polishfrontend/codex
In progress
Backoff + jitter in retry loopcodex
Regression tests for task 5reviewer/claude
Done
Task 4 · verified end-to-endclaude
Deploy preflight warningshuman
storefront:general coord health: Ping attempted 1 · Acked 42
clauderequesttake the retry loop, I'll do types — reply when tests passseq 41 · 12m
codexstatusbackoff + jitter in, running the suiteseq 42 · 6m
codexcompletion89 tests green — over to youseq 43 · 1m
yourequestship it behind the flag, journal the decisionnow
‹  Sunday, July 12  › biographer · Model via Claude

The retry hardening landed end-to-end: claude scoped the failure surface and delegated the loop rewrite to codex over the mailbox [1]; 89 tests passed across three files before the pair closed the thread [2].

docs-site remains blocked on an operator decision about the deploy target — flagged in Deck since 14:02 [3].

14 evidence signals · Bases: 3 · 3 citations
storefront/ ├ base.md ├ apps/web/ │ ├ src/retry.ts M │ └ tests/render.test.ts A └ .memory/MEMORY.md
// retry.ts — exponential backoff export function retry(fn, opts) { const base = opts.baseMs ?? 200; const jitter = Math.random() * base; ... }
ProjectFirst MessageMsgsToolsDurationDateActions
storefronttake the retry loop, I'll do types…112412h 42mtoday 14:02open · resume
api-coreaudit the auth middleware for…642858mtoday 09:15open · resume
docs-sitedraft the deploy runbook from…311226myesterdayopen · resume
NameTypeRealmDescriptionTagsHostPath
storefrontcodeprodcustomer storefront appweb, deployedbuild-01code/storefront
api-corecodeprodbackend servicesapibuild-01code/api-core
infra-toolshostopsinfrastructure scriptsopsprod-01host/infra-tools
PIDUserCommandListening PortsCPU%Mem%Action
41283oneclaude (storefront)4%7%kill
41407onecodex (storefront)9%5%kill
1337onenode · based-web13372%2%kill
Deploy runbook draft#ops #pinned
Preflight → promote → health gate → rollback path…
Retry semantics decision#arch
Backoff with jitter; cap at 5 attempts; journal the choice.
ClipSourceWhen
curl -s :31337/api/loops | jq '.loops[].id'xterm4m
correlationId contact-…-y60on0cli18m
rollback previoustmux1h
DomainStateDetail
apihealthy123 MCP tools registered
webhealthyproxy + terminal bridge live
loopsscheduler live21 automations registered
provider driftclean4 providers on expected paths
BaseSessionsMessages
storefront181,204
api-core11872
docs-site4240
23:41:02 INFO loop model-discovery completed in 1.8s
23:40:44 INFO mailbox seq 43 delivered → storefront-claude
23:39:10 WARN resource-pressure: command_class_rss near threshold
deploy/runbooklint: clean
Release-aware deploys: preflight, promote, health gate, rollback.
coordination/mailboxlint: 1 stub
Intents, delivery states, and the watchdog explained.
RecordScopeUpdated
MEMORY.md — retry lesson, deploy gotchasbase · storefronttoday
provider harness memoryclaude · read-onlytoday
central legacy memoryplatform3d
ArtifactKindProvider
CLAUDE.mdinstructionsclaudeedit
AGENTS.mdinstructionscodexedit
revieweragentclaudeedit
HostRoleLivenessVMsProvenance
build-01devReachable2discovered
prod-01prodReachabledeclared
gpu-01inferenceUnknown1discovered
Terminal focus — one base, both minds. A Claude session and a Codex session pair on the same project, coordinating through the mailbox you can see landing in the transcript.
Quick cmd
CPU 17% · RAM 55%
Net 45 KB/s
Queue
ambient — late night
synthwave — on repeat
lo-fi — steady state
13
Queryable Domains
22
CLI Commands
123
MCP Tools
4
AI Providers
11
Specialized Agents
The best collaboration doesn't need a handoff — it happens in the same room.

Most AI tools create a boundary: humans work here, agents work there, and something translates between them. Based removes the boundary entirely.

Humans and agents share the same terminal sessions, navigate the same filesystem, query the same 13 structured domains, and communicate through the same messaging primitives. There's no integration layer because there's nothing to integrate — it's one workspace.

Projects discover themselves through convention. Infrastructure declares itself in YAML. Sessions capture themselves automatically. Memory compounds across conversations. The workspace is the interface.

When you work in Based, you're not managing AI — you're working with it. Same context, same tools, same room.

Co-Work
Everything is shared
Based doesn't separate human workflows from agent workflows. Every surface is designed for both.
Humans + Agents

Shared Terminal

Real PTY sessions where humans type commands and agents send keystrokes into the same tmux pane. Broadcast mode syncs input across all sessions. No simulator, no sandbox — the real terminal.

Humans + Agents

Shared Filesystem

Convention-driven project discovery. Drop a manifest in any directory and it exists. Both humans and agents navigate the same tree, edit the same files, read the same configs.

Agents

Self-Describing API

Agents read one manifest and discover every domain, field, filter, and query pattern at runtime. No documentation needed, no custom adapters. Also available as 123 native MCP tools.

Humans

Web Explorer

24-mode dashboard with file explorer, session browser, infrastructure map, terminal grid, notes, memory, logs, usage analytics, and kanban. Keyboard-driven. Everything agents see, you see.

Humans

Flow Triggers

Queue the tracks that put you in the zone. Not a streaming service — a focus tool. Three songs on repeat for six hours. You know the ones. Built into the workspace because deep work isn't just code — it's state of mind.

Humans + Agents

Three Messaging Pathways

Contact — intent-based agent-to-agent send. A request wakes the recipient; a status note waits politely. Typos bounce with suggestions; a missing teammate gets started automatically.
Box — async file drops into any project's inbox. Markdown, images, links, whatever. Drag and drop from the web, or base box from the CLI.
Msg — structured mailbox with sequence numbers and acknowledgments. Agents coordinate through typed messages. Humans read the same inbox.
Beam — real-time tmux send-keys. Broadcast a command to every running session, or target one. Instant. No queue, no delay.

Terminal-First
The terminal is the workspace
Not a terminal emulator bolted onto a dashboard. The terminal is where work happens — Based orchestrates around it.
based — streaming-infra
base start streaming-infra → resuming tmux session → provider: claude (opus) → memory loaded: 3 topics → context: 47 prior sessions
base beam streaming-infra "run the migration" → sent to: streaming-infra
base status streaming-infra claude 12m active dashboard codex 4m idle fleet-manager gemini 28m active

Start a session. Pick a provider. Work.

base start launches a tmux session with your chosen AI provider — Claude, Codex, Gemini, or a local Ollama model. Sessions persist. Context carries over. Memory loads automatically.

Multiple sessions run in parallel across different projects and providers. base status shows everything at a glance. base beam sends commands to any session from anywhere.

Every session is captured — messages, tools, tokens, duration. Full transcripts queryable through the API. Agents pick up where they left off, even across provider switches.

Use the right model for the job

Health-checked provider chain with automatic fallback. First healthy provider wins. Switch per-session or let Based route.

Claude
Codex
Gemini
Ollama

intelligence.yaml → priority chain → health check → auto-fallback

reflex  every 15m
narrative  daily
council  weekly

model profiles route by tier — quick reflexes, daily narrative, deliberate council

Domains
13 queryable domains, one namespace
Every domain is a structured data source with its own schema, filters, and query semantics. Together they form a complete, searchable map of your operation — accessible to humans, agents, and scripts identically.
projects
Auto-discovered bases with git state, tags, lifecycle
sessions
Agent sessions with transcripts, tokens, tools used
artifacts
Agents, skills, commands, hooks, MCP configs
hosts
Infrastructure inventory — machines, VMs, specs, roles
git
Branch status, uncommitted changes, recent commits
logs
Service and session logs with level filtering
memory
Per-project memory index and topic files
config
Parsed project manifests and settings
health
Service status, cron success rates, diagnostics
views
Aggregated artifact views across projects
usage
Token counts, cost analytics, activity metrics
files
Full-text search across all project files
wiki
Ingested docs, semantic search, page lifecycle
Agent API + MCP
Agents discover the workspace at runtime
One self-describing manifest. Agents read it and know everything Based offers — domains, fields, filters, example queries. No integration code, no adapters, no documentation pass required.
Available as both a REST API and 123 native MCP tools. Same data, same semantics. HTTP for scripts, MCP for agents on the same machine.
identitycoordinationqueryfilesgitmemorykanbanloopsnoteswikitmuxdeployintelligence
GET /api/agent/
Self-describing manifest
GET /api/agent/query?q=
Cross-domain search (fan-out, <500ms)
MCP based_query
Same search, native tool call
MCP based_tmux_send
Send keystrokes to any session
# bearer token, straight from your config # search across all 13 domains curl "/api/agent/query?q=deploy" \ -H "Authorization: Bearer $API_TOKEN" # response: 45 results in 312ms { "meta": { "total": 45, "duration_ms": 312, "byDomain": { "files": 33, "logs": 4, "artifacts": 3, "config": 2, "git": 2, "memory": 1 } } }
CLI
22 commands, zero ceremony
The Based CLI is the primary interface. Start sessions, query status, send messages, manage memory, run diagnostics — all from the terminal.
base start <name>

Launch or resume a tmux session with provider selection

base status

Cross-project dashboard — sessions, health, activity

base beam <msg>

Send keystrokes to any running session in real time

base box

File-drop inbox — async messaging between humans and agents

base msg

Structured mailbox with sequencing and acknowledgment

base list

All registered projects with type, realm, and status

base new <name>

Scaffold a new base with manifest and structure

base memory

Extract and consolidate session knowledge

base swarm

Orchestrator plan and task control

base doctor

Health checks, dependency validation, diagnostics

base manifest

Canonical resolver — scan, read, check, migrate manifests

base wiki

Ingest, query, and lint per-base wiki pages

base audit

Pain-pattern audit over everything the platform emits

base mine

Query months of session history — read-only, indexed

base clip

Clipboard history — save, search, recall

base flags

View and toggle feature flags

base selftest

End-to-end integration test suite

Orchestrator
Coordinate, don't micromanage
Role-scoped agent coordination. A coordinator plans and delegates. Workers execute. Verification confirms. The loop runs until the work is done.

Plan

Coordinator breaks work into tasks

Delegate

Workers receive via mailbox

Execute

Workers use role-scoped tools

Verify

Results checked against plan

Role-Scoped Tools

Coordinators only get orchestration tools — planning, delegation, messaging. Workers only get execution tools — files, search, git, terminal. Clean separation enforced at the MCP level.

Mailbox IPC

File-backed messaging with sequence numbers and acknowledgment. No HTTP between agents, no shared state. Just JSON lines in a mailbox. Simple, inspectable, debuggable.

11 Specialized Agents

Auditor, pain-auditor, test-author, tester, bug-fixer, fix-proposer, reviewer, frontend-dev, backend-dev, CLI-dev, docs-writer. Each has skills, commands, and hooks. Mix and match for any workflow.

Sub-agents
Agents all the way down
A base isn't limited to one agent. Declare named sub-agents in the manifest — each with its own provider, role, and corner of the workspace — and start them with a flag.
Every sub-agent knows exactly who it is: its parent base, its identity, its role. Claude sessions can even fork — branch a session to explore an idea without losing the thread.
CLI base start mybase --agent reviewer
Start a configured sub-agent
CLI base start mybase --fork exp1
Branch a Claude session to explore
# base.md — the team, declared agents: reviewer: provider: claude role: worker cwd: packages/api frontend: provider: codex role: worker cwd: packages/web # each gets its own tmux session: # mybase-sub-reviewer-claude # mybase-sub-frontend-codex
Automation
The workspace runs itself between sessions
Discovery, journaling, pressure monitoring, health checks — recurring work runs on its own clocks, declared in one registry, visible with its cadence and history. Drop a manifest and a prompt and you have a recurring intelligence workflow of your own.

One registry

Provider loops, system loops, ambient watchers, external workflows — recurring work is declared in source and surfaces in the Loops view with the state each class supports. Nothing hides.

Your loops, too

A daily digest, a code sweep, a report that writes itself — a manifest and a prompt make a recurring intelligence workflow. Pause it, run it now, watch its history.

Self-maintaining

The platform watches resource pressure, checks provider drift, audits its own pain patterns, and rolls the day up into a journal — with citations.

loops
model-discoverydaily
resource-pressureevery 5m
journal-daily-rollupdaily
provider-drift-readiness6h
wiki-lintevery 30m
your-daily-digest07:00
Memory
Knowledge that compounds
Per-project memory that persists across sessions, agents, and provider switches. Not chat history — structured, topic-scoped knowledge that gets better over time.
.memory/ ├── MEMORY.md — always loaded into context ├── topics/ │ ├── architecture.md — system design decisions │ ├── deploy-gotchas.md — hard-won lessons │ ├── preferences.md — coding style, conventions │ └── debugging.md — past issues and fixes

Sessions become knowledge

Every session generates knowledge. Based extracts it — decisions, gotchas, architectural choices, debugging insights — and files it into topic-scoped memory that loads automatically on the next session start.

Memory isn't locked to one agent or one provider. Switch from Claude to Codex, the memory carries over. Onboard a new agent, it reads the same files. The project remembers, not the model.

Auto-dream mode synthesizes insights during quiet hours. The workspace reflects on itself.

Workspace Surfaces
Every kind of work has a home
Boards agents move cards on with their name attached. Notes both sides read and write. A wiki that ingests, answers, and lints itself. All of it shared — web for you, MCP for them.
deck
Every session at once — the operator wall
journal
The day written up, with evidence and citations
kanban
Boards and cards, human and agent moves attributed
notes
Shared notes — tagged, pinned, syntax-aware
wiki
Ingest docs, query them, lint the answers
clipboard
Terminal history worth keeping — searchable
uploads
Drop a file from anywhere; it lands in the right base
chronicle
Structured events behind the operational history
Pairs
Two models. One workspace. Emergent collaboration.
Different models have different strengths. Instead of picking one, pair them. They share the same filesystem, the same messaging system, and the same memory — and they figure out the rest.

Models that complement each other

Run Opus and Codex side by side on the same project. One reasons deeply about architecture. The other executes fast, parallel file changes. They communicate through Based's messaging primitives — mailbox, file drops, shared memory — and naturally start routing work to whoever handles it better.

This isn't a pipeline or a chain. It's co-work — two agents with different minds reading the same codebase, seeing each other's changes in real time, and developing their own communication patterns to lean into their respective strengths.

No special API. No pairing protocol. Just the workspace primitives that already exist for human-agent collaboration — applied to agent-agent collaboration.

base status
base status
api-refactor opus planning migration strategy api-refactor codex executing file changes (batch 3/5)
base msg inbox
opus → codex "hold on batch 4 — the auth middleware needs the new types from batch 2 before you touch the routes"
codex → opus "acknowledged. running tests on batches 1-3 while you finish the type definitions. ready when you are"
Adaptive Web UI
Three shells. One state. Every screen.
Based's web interface isn't one layout with media queries bolted on. It's three purpose-built shells — compact, tablet, and desktop — each designed for how you actually use that device. Same data, same routes, different surfaces.

Compact Shell

< 640px — phones

Single-pane, bottom tab bar, sheets for secondary content. Check status, read agent updates, send messages, capture notes. Desktop-only features show a placeholder — not a broken miniature.

Tablet Shell

640–1024px — iPads, small laptops

Narrow icon rail + content pane. Slide-over panels replace persistent sidebars. Files and terminal available with touch-aware controls. Right sidebar becomes a sheet, not a crammed column.

Desktop Shell

1024px+ — laptops, ultrawides

Full IDE-like 5-column layout. Activity bar, dual sidebars, content area, terminal panel. Ultrawide gets intentional use of extra space instead of stretched emptiness.

Don't shrink — replace

Each shell is a separate component consuming the same Zustand store. When you rotate an iPad from landscape to portrait, the shell swaps — your route, your state, your selected project all survive. Monaco and xterm don't even download on phones. That's not a bug, it's a 3MB bundle win.

Touch-first where it matters

44px minimum tap targets on touch devices. Pointer modality is a first-class axis — an iPad with a trackpad gets desktop density but touch-safe hit areas. Safe-area insets, dynamic viewport units, sheets over modals. The details that make mobile feel native, not adapted.

Three fonts. Three cognitive modes.
Based's typography isn't aesthetic preference — it's applied cognitive science. Research shows font choice measurably changes memory, focus, and reading behavior. We designed around that.
Aa

Monospace

JetBrains Mono — doing

Headlines, commands, structure. Monospace fonts create desirable difficulty — the brain works harder to process them, encoding content deeper into memory. Every section title sticks because it costs a little more to read.

Diemand-Yauman et al., 2011 — disfluent fonts improve recall by 14%

Aa

Serif

IBM Plex Serif — thinking

Philosophy, descriptions, long-form. Serif fonts increase time spent reading and improve recall over sans-serif. The reflective text on this site uses serif because those are the ideas we want you to sit with.

Gasser et al., 2005 — serif fonts aid recall vs. sans-serif

Aa

Sans-Serif

Inter — navigating

Body copy, UI chrome, card text. Sans-serif fonts are fastest to read on screen — they reduce cognitive load on content that should be transparent. Navigation-level text should inform, not compete for attention.

Kaspar et al., 2015 — sans-serif increases online reading speed

Most tools pick one font and call it a day. Based uses typography as a cognitive layer — monospace for structural memory, serif for reflective depth, sans-serif for speed. The same research applies inside the product: terminal sessions use monospace for retention, wiki pages use serif for comprehension, and UI controls use sans-serif to stay out of your way. Your reading environment is part of the tool.

Your workspace. Your palette.
Color isn't cosmetic — it's information density. Based ships opinionated defaults and lets you override everything. Accent colors, surface tones, syntax palettes, semantic signals. One config file, applied everywhere.
midnight
default
terminal
green phosphor
opus
purple depth
amber
warm focus
daylight
light mode
theme.yaml
name: my-workspace base: midnight
accent: "#4090ff" surface: "#0a0a0a" border: "rgba(255,255,255,.06)"
semantic: success: "#34d399" warning: "#f59e0b" error: "#ef4444" info: "#4090ff"
syntax: one-dark # or dracula, catppuccin, nord

Semantic colors

Success, warning, error, info — mapped to meaning, not arbitrary hex values. Change the accent and every status badge, terminal highlight, and diff gutter updates in sync.

Surface math

Set one background and Based derives the full surface stack — elevated cards, inset panels, borders, hovers. Perceptually uniform spacing so dark themes don't crush detail.

Syntax palettes

Bring your syntax theme. One Dark, Dracula, Catppuccin, Nord, Solarized — or define your own token map. Applied to Monaco, terminal, and markdown preview simultaneously.

Per-project themes

Drop a theme.yaml in any project. The UI shifts when you switch projects. Opus work in purple, Codex work in cyan — color becomes context.

Time-of-day adaptation

Schedule theme shifts. Cool blue during deep work hours, warm amber at night, full daylight when the sun's up. Your workspace follows your circadian rhythm, not a toggle switch.

Agent identity

Each agent gets a color. When an agent is speaking in the terminal, editing a file, or pushing a status update — its accent color tags the output. You know who did what at a glance.

Your tools. Your terminal. No harness.

Based doesn't wrap, proxy, or intercept any AI provider's API. When you start a session, you're running Claude Code, Codex, or Gemini CLI directly in a terminal — exactly as the provider intended. Based just orchestrates the workspace around them.

✓ TOS-Safe

No third-party API access. No token proxying. No subscription workarounds. Providers see normal CLI usage because it is normal CLI usage.

✓ Future-Proof

When providers change their policies, access tiers, or pricing — Based keeps working. It doesn't depend on anything that can be revoked.

✓ Zero Lock-In

Switch providers per-session. Run Claude on one project, Codex on another, local Ollama on a third. Your workspace doesn't care which model is thinking.

One command. macOS and Linux.
Based runs where terminals run. No Electron, no Docker, no containers. Just a binary that orchestrates your existing tools.
install
curl -fsSL https://based.md/install | sh
detecting platform... darwin-arm64 downloading based v2.0.0... installed to /usr/local/bin/based
base doctor tmux 3.4 claude 2.1.92 codex 0.118.0 ollama 0.6.2 ready.
macOS
Intel & Apple Silicon
Linux
x64 & ARM64
Windows
use WSL

Based orchestrates your AI CLIs — it doesn't replace them.
Install your providers separately: claude, codex, gemini, or ollama.

Getting Started
Three steps to a shared workspace
Based reads your actual filesystem. No imports, no sync, no migration. Convention-driven discovery means zero setup for new projects.

Declare what exists

Drop a base.md manifest in any project directory. Add hosts to hosts.yaml. Based discovers them automatically. The filesystem is the database.

Based indexes everything

Git repos, sessions, memory files, artifacts, configs, health checks — scanned, parsed, and structured into 12 queryable domains accessible from CLI, API, MCP, and web.

Work together

Start a session. The agent has full context. Send it a message. Read its memory. Query across everything. Same workspace, same tools, same room.