Signing and notarization: not done yet
Builds are unsigned today, and that is the single thing standing between this list and an invite. Stated plainly because it is the honest answer to “when do I get in”.
Limited beta · macOS
A local desktop workbench where the graph is the work: agents hand off, a critic can close the gate on bad output, and a human gate holds the run until you answer.
Work email, please — the beta is small. You get a short build log every two weeks, and an invite when macOS signing lands. One-click unsubscribe. Privacy.
Claude wants to run a command.
psql −c 'DROP INDEX orders_pkey'
Also sent to your phone — answer from either.
Mockup stand-in for the hero asset — the real one is decided in issues/07.
The work went parallel; the window didn't. Seven things Lotus does that a grid of terminals cannot — each one a mechanism, not a benefit.
Agents, terminals, live browser panes, notes and diagrams are nodes on an infinite surface you arrange like a workspace. Position is memory: the layout itself records how you think about the work.
Lotus exposes itself to the agents running inside it over MCP — 46 tools. An agent can spawn a cell, hand work to a teammate, then block until it reports back. Orchestration becomes something you delegate, not something you perform.lotus_spawn_celllotus_dispatch_to_celllotus_wait_cell_idle
Wire a critic downstream of an agent and it runs like one — reading the upstream output and emitting a verdict. A FAIL closes the gate, so the work stops instead of flowing on. Put a human gate beside it and the run pauses until you approve or reject, with the question waiting on the canvas where you left it.
Guessing a session's phase from terminal text is a heuristic, and heuristics fail exactly when it matters. Lotus reads state from the agent CLI's own hooks, so “waiting on you” is a fact the agent declared — not a pattern match on scrollback.
Parallel agents editing one checkout collide. Lotus gives a cell its own git worktree, so four agents touch four trees and you review four diffs instead of untangling one.
A browser node is a real browser. Mark the broken element, and the annotation — cropped screenshot and all — is delivered to the terminal node it is wired to, as the next attachment that agent reads. The visual bug never has to be described in words.
A permission request carries the exact command it wants to run, and it can be answered from a phone paired to the same machine — the same authoritative signal that turns a cell amber here, routed to a second screen instead of waiting on the first.
The same repository, the same running agents — addressed either as a dense workspace or as a graph. You switch surface, not project.
Terminals, diffs, editor context and browser panes in one tiled workspace — driven from the Bridge composer. One prompt either answers you itself or becomes a Fleet Command that routes the work to cells.
The same work as a graph. An agent node carries identity — name, model, skills, run history — and wires to its neighbours with handoff edges. Critics, human gates and shared context buses are nodes too, so who hands what to whom, and what must be approved before it moves, is drawn rather than remembered.
The distinction the graph draws is real: an agent node is a reusable definition with a name, a model, skills and its own run history, while a terminal node is a bare shell with no identity at all. Both are cells you can dispatch to — only one of them remembers who it is between runs.
Lotus drives the agent CLIs you already installed and pay for — Claude Code and Codex first-class, anything else through a custom runner. There is no per-token markup between you and your provider, and nothing to reconcile at the end of the month.
The same choice keeps you portable. When a better model ships next month you point Lotus at it; the workbench is not the thing you would have to leave.
The same log that goes out by mail. Invites open when macOS signing and notarization land — you will read it here first.
Builds are unsigned today, and that is the single thing standing between this list and an invite. Stated plainly because it is the honest answer to “when do I get in”.
A stopped agent now surfaces the exact command it wants to run, and answering it remotely releases the turn on the desktop canvas.
Scrollback replay raced the live stream on reattach. Output is now ordered against a single ring buffer per session.