Research
Four years of research.
Shared Office is the culmination of over four years of dedicated research into distributed systems and agentic control, supported by government innovation grants. The operating philosophy is laid out in The Next Big Solution in AI; the convergent synthesis — where type theory, distributed scheduling, service contracts, and agent harnesses meet — is audited in For Posterity.
Along the way we built consoleone.ai and storylens.one. We’ve now packaged and released the most coherent libraries from across the effort as public repositories under github.com/console-one. This is not the entire Shared Office product — but it is all the materialized research convergent to its synthesis, and the frameworks that differentiated everything we built before it.
Four years, three products, one discovery
Console One’s founder spent seven years at Amazon building planning, scheduling, and control systems for a million-person fulfillment workforce — mixed-integer optimization, discrete-event simulation, event-driven architecture — before turning the same class of problem on AI. What followed was the same kernel, discovered three times from three directions:
Console One (2022–2025) — “the network as one computer”: a browser IDE, a computational meta-language, and a custom version-control system that linked, versioned, and self-deployed itself. It proved the underlying kernel had to exist.
StoryLens (2025–2026) — “one workspace for your AI coworkers.” Meant to be the simple one, it independently re-derived the very same kernel from a completely different direction. It proved the kernel could be built.
Shared Office (2026–) — the kernel finally extracted into the standalone libraries below, and the product built on them.
“The components stopped looking like components. They looked like one object photographed from five bad angles.”
The convergence, in brief
Large language models are stateless — every turn re-sends the whole story. The unit of capability isn’t the model; it’s the harness around it: what gets shown each turn, what it can do, what it can reach. Scale that to a team and the harnesses multiply across machines — and whether any agent can run depends on shared state: token budgets, machine capacity, quotas, deadlines. Coordinating an organization’s AI becomes a planning and scheduling problem over one shared, priced account of what is true.
The surprise was that the pieces aren’t separate. A team’s memory, its calendar, its scheduler, and an agent’s context window are four reads of the sameappend-only log of facts: read backward it’s memory, forward it’s a calendar, inverted it’s a schedule, budgeted it’s the prompt. Billing, access control, and monitoring stop being subsystems and become derivations. No existing type system carries what that needs — time, belief, cost, and provenance as first-class properties of a value — so we built one, and rebuilt it five times. These repositories are its materialized pieces.
The kernel & type language
The heart: a type language where values carry validity, time, cost, and provenance — and the prototype product that proved it.
sequence · v1
superseded design-intentAppend-only behavioral type kernel — types and values as one continuum.
The first crystallization (2026): types that carry deadlines and confidence (P(done ≤ deadline) ≥ conf), time-conditioned gap priority, RBAC derived from state, and backward tool search. Mined, not run.
sequence · v2
active kernel · ~1,054 tests · 0 depsOne lattice, one operation (insert), every feature an installed rule.
The decided semantic kernel Shared Office is built on: constraints-as-data, one generic evaluator, where-gated blocks that suspend and watch, belief distributions with Bayesian updates, commitment election, and the mutual-rendering planner. Backlinks, gates, budgets, scheduling are all mounted rules — not kernel code.
fieldtype
concept absorbed into sequence v2 · still in prodA CUE-inspired structural type system that doubles as a reactive rule engine.
The type IS the fold function — no separate ORM or query engine. Carried belief-suspension, the draft/preflight/gaps lifecycle, and read-visibility as a type-level concern. The “type = fold” thesis sequence later subsumed.
scope
sibling kernel · port-shelfA constraint-propagation kernel over multi-dimensional anchors — one kernel for access control, typing, gates, and lifecycle.
Three-valued verdicts (met / unmet / undetermined) with a per-verdict policy — continue, preempt (kill the change), or hoist (escalate a suspended judgment to the scope that owns its resumption). Proved hoisting is its own rule.
substrate
archived prototype — informs the productEvent orchestration across agents and users — the original working Office Space.
The end-to-end proof that memory, calendar, scheduler, and context-window are four projections of one append-only fact space. Server, permanent agents, env adapters (unix / docker / lambda / browser), bilateral gap exchange over WebSocket — the shape the shipped product re-materializes.
Cost, control & execution
Budgets as prices, not caps — and the machinery that turns a typed value into a live, metered, controllable process.
guardrail
liveDeclarative temporal constraint evaluation — identity-keyed resource budgets that discover their own dependencies and commit atomically.
The literal “guardrail” of the thesis: forecasting and control of token consumption across a shared plan, fail-closed and all-or-nothing. A law's read-set is derived, not hand-listed.
compile
complete · archived (recovery-flagged)A hoist-aware compiler that treats budgeted rendering as constrained optimization, not truncation.
Where we learned budgets are prices, not caps: for every shared sub-expression, inline at each use or hoist once and reference — chosen to maximize fidelity under a cost cap, with elision priced, never silent. The engine behind token-budgeted prompt and brief composition.
runtime
liveTurns a typed value into a running, addressable, snapshotted, subscribable process — without inventing a new primitive.
Pure glue wiring three packages that know nothing about each other. Two findings: persistence IS subscription (one dispatch), and a type's constraints ARE its schedule (operational policy lives in the contract).
process
liveTyped, event-emitting, subscribable long-running computations — addressable and controllable (pause / resume / cancel / seek).
The liveness substrate beneath shared spaces, with retention so late subscribers get the replayed tail. Sharpened a core distinction: suspending an execution (a parked generator) is a different rule from suspending a belief.
Versioned data & lineage
Append-only truth, deterministic replay, and the patch-plus-inverse machinery that makes belief revision possible.
source
liveAn event-sourced version-control engine generic over content type — patch log is truth, reads are nearest checkpoint plus forward replay.
Built for stateless serverless (not Git, CRDT, or OT). Proved deterministic replay is a provenance rule — same log, same content — with hot/cold storage tiering. The persistence spine under versioned state.
patchkit
live · inverse machinery dormantA polymorphic interface for version control over arbitrary data — every type implements the same five operations.
The witnessed-mutation primitive: a mutation transparently commits a patch and its inverse. That inverse is the retraction / belief-revision prerequisite the whole synthesis still rests on.
cell
superseded — instructiveA versioned cell composing a patchkit type, the source engine, and namespace addressing.
A cautionary fossil: cell was later deleted for re-implementing the substrates beneath it. That deletion is the “no fourth primitive” discipline now load-bearing in the architecture (process IS the cell).
sequenceutils
liveCompanion utilities for sequence — agent loop, indexSpec policies, base tools, WebSocket transport, React hooks.
Keeps the kernel lean; pay for what you import. Its agent loop (hoist → LLM → violations → gaps) is the reference for what a substrate must render for an LLM to self-correct — and informs the ambient team brief.
Language, parsing & structure
Why “features are vocabulary, not subsystems” — grammars and addresses that compose at runtime instead of forking the engine.
parser
archivedA pushdown parser whose grammars compose at runtime — a guest language parses on the host's stack, no sub-parsers.
The mechanism behind “features are vocabulary”: you extend one grammar by registering transitions into a shared table, not by building a new engine. Built to embed templating/meta-languages into markdown or JSON.
segment
archivedA multi-format composite path grammar — one engine walks paths, streams, and cross-regime references.
The single addressing primitive for a multi-dimensional lattice (structure, time, identity, partition, stage, type). The shipped `as` operator is its single-boundary special case.
disambiguator
archivedA heap-based probabilistic decision-tree executor — evaluate next whatever prunes the most expected work.
Recovered the rule that inference order is itself a judgment under budget (weight = expected work pruned). The in-kernel echo is `office gaps`, ranked by what each unknown blocks.
walker
archived · utilityA path-based tree-walker — register handlers on dotted paths, walk once, get per-path callbacks.
A corroborating echo of indexSpec: one-pass multi-path extraction with subscriptions-as-handlers, O(n) instead of O(n × paths).
namespace
archivedA multi-dimensional temporal artifact index — address anything across identity, version, and stage in one path.
Taught the version-pin vs. live-stage distinction with fallback chains (LIVE → INTEG → STAGING), now articulated as `topic@seq` pins vs. head semantics. Indexes declared as metrics, not schemas.
Distributed plumbing & addressing
The wire-level pieces: compound identity, structural serialization, live values, and the data structures the rest sits on.
address
liveMulti-dimensional addresses — one stable anchor plus N per-dimension coordinates, round-trippable as a compact string.
Seeded the interpretation-carrying address ({ server, uri, as }) and per-caller dimensional projection — audience-projected identity, the reader applied to naming.
wire
liveA dictionary-based structural codec with delta encoding, a graph bundler, and a hoist/inline code generator. Zero deps.
Independently re-derived the hoist-vs-inline decision first seen in compile — confirming that rendering under a bound is a universal operation. Measures encoding cost per value, not per type.
subscription
liveAn observable/promise hybrid — a late-bound value that resolves like a promise but fires repeatedly and replays to late subscribers.
The live-push / subscriptions-as-state pattern; replay plus demand-gated dequeue prefigure flow-controlled fan-out — the lesson a WebSocket fan-out defect later paid for in production.
collections
live · utilityCollection structures distinguished by referencing and observation — observable queues, index maps, heap maps.
Handle-based identity and in-place priority update() — the reusable idea behind schedulers, subscription registries, and reactive UIs.
multimap
live · utilityMinimal list / set / heap multimaps — order-preserving, deduped, or priority buckets behind one API.
The recurring “each key holds a collection” need (event → handlers, entity → tags, key → priority queue), without re-rolling per-bucket bookkeeping.
Browse the source.
Every repository above is public, MIT-licensed, and zero- or low-dependency. Read the thesis, fork what’s useful, or get in touch.