A canvas for CLI agents · macOS

Your whole workday,
at any altitude.

Terminals, agents, browsers and automations on one infinite canvas. Zoom out to see every agent at once. Zoom in to answer the one that needs you.

Scroll to fly

01 · One canvas

Everything you run.
One canvas.

Terminals. Agents. Browsers. Automations.
Billing v34 tiles · 2 working · 1 live
claude · billingWorking
~/code/northwind on feat/intents-v3
❯ claude "ship billing v3"
● Plan · 4 steps
✓ map charge → intent lifecycle
✓ migrate call sites (14/14)
◐ run billing suite
72%
Preview · localhost:3000Live
localhost:3000/billing
Revenue$48,210
↻ reloads on save
Every weekday · 07:00Scheduled
0 7 * * 1-5
starts → claude · digest
plan.mdNote

Billing v3

  • Intents behind a flag
  • Webhooks idempotent
  • Refunds through intents
  • Remove charges API

Edited by you and the agent

drives triggers plan

Wires mean something: this agent drives that browser, this schedule starts that agent, this note is its plan.

02 · Semantic zoom

One object.
Four altitudes.

The same tile draws differently depending on how many pixels it gets. Not a rendering trick: the feature. Pinch, drag the altimeter, or scroll the stage.

ALT 1:1tile 420 px
  1. Liveover ~330 px

    The full terminal, typeable, with its scrollback. Browsers are real pages.

  2. Summary70 – 330 px

    Agent, task, state, last line, progress. Enough to know without reading.

  3. Signalunder ~70 px

    A glowing card in its state colour. “Needs you” pulses.

  4. Everythingwhole canvas

    Regions become counts: 12 agents · 8 working · 1 needs you.

03 · At a glance

Twelve agents.
One glance.

States come from the agents’ own hooks, not from guessing at the screen. Working, needs you, done: you see it from across the canvas, and ⌘J walks you to each one that’s waiting.

  • Working
  • Needs you
  • Done
  • Idle

04 · The canvas speaks MCP

Agents put things
beside themselves.

Every agent Altifield starts gets the canvas as a tool. It can open the staging dashboard next to itself, pin its plan as a note, or ask for your attention. Writes ask first, and every one is a single undo.

codex · pipelineWorking
drives
staging · eventsOpened by agent
staging.pipeline.internal/events
canvas.open_browser
DenyAlways AllowAllow Once

05 · Automations

Automations
you can watch.

Cron, webhooks and file watches live on the canvas, wired to the agents they start. They run in the background daemon, so they fire with the window closed.

06:59
Every weekday at 07:00cron · 0 7 * * 1-5
Summarize the inboxidle
Morning, Oct 7

06 · iPhone and iPad

Away from the Mac.
Still in charge.

When an agent asks to run a command or edit a file, the question reaches your phone with the diff. Allow once, always, or deny with a reason the agent reads. Answer at the Mac instead and the phone clears at once.

  • Paired by QR, end-to-end over TLS 1.3, your Mac’s key pinned
  • Face ID before anything is allowed
  • The terminal stays in charge: no answer is ever invented
  • Read an agent’s conversation, its terminal and its diff; reply by voice

In development · iOS 18

120Native, on Metal

A Swift app drawn on the GPU at the display’s rate. Not a web view, not Electron.

∞Agents outlive the window

Shells live in a background daemon. Quit the app, open it tomorrow, everything is where you left it.

0Nothing in the cloud

Your canvas, your terminals and your keys stay on your Mac. The phone talks to it directly.

CLIBring your agents

Claude Code with hooks and the canvas as a tool, Codex, or anything that runs in a terminal.

altıfıeld

Your whole workday, at any altitude.

macOS 15 · Apple silicon · AGENTS · TERMINALS · BROWSERS · AUTOMATIONS