02 / Spatial AI workspace
See the sources behind an answer.
A spatial workspace for thinking with AI over live data, with APIs on the fly. Drop Data blocks that pull real numbers, wire them into AI personas, and ask a question that is answered only from what the wires actually carry. Formerly OmniOS.
A limited public preview is live at omni.syberlabs.io: the canvas, the Shell Store and every keyless public data source run in your browser. AI answers and keyed sources are switched off there; the full app runs on your own machine with your own model keys.
Demo film
The morning: one question, cited sources, a crystal, a second persona
Why
Why a canvas.
When you ask an AI about the world, its context is invisible: you cannot see which numbers it was given, which it was not, and whether a source it cites carried anything at all. FLYSPACE makes the context physical. A block is a live view of one source. A wire says this feeds that. A persona is a mind whose entire context is what its incoming wires carry.
So the question “what does this thing actually know?” has a literal answer you can point at on screen. A source that carried no data is never cited, and an answer records which runs fed it, however many personas deep.
Use
What you can do in the preview
Everything below the first three steps needs a model key, so it runs locally, not on the public preview.
- 01 / Shell
Open a pre-wired shell
The Shell Store spawns saved canvases. The Investor shell arrives with Polymarket, CoinGecko, World Bank and Hacker News already wired into an Analyst, and the Analyst into a Strategist.
- 02 / Blocks
Pull real numbers
Add blocks for prediction markets, crypto prices, economic series, research and news. Every built-in source is public and needs no key.
- 03 / Wires
Say what feeds what
Draw a wire from a block to a persona. Ports are typed; a wire that does not fit is refused with a sentence naming both ports, and the graph is left unchanged.
- 04 / Ask
Locally, with your key
Ask a persona a question. The answer cites only the sources its wires carried, and the inference ledger records provider, model, latency and which runs fed the turn.
- 05 / Talk
Spoken canvas control
Hold Talk and say a command from a fixed grammar: “wire hacker news to the analyst”, “delete this”, “undo”. Speech only proposes; the interaction engine decides, previews a delete, and refuses ambiguous names.
Inspect
Which sources reach an answer.
The Investor shell, stepped through by rule: a feed fails, a feed goes stale, and the record says exactly which sources each answer used. Open any node to see who owns it.
This map needs JavaScript. It steps through the Investor shell: four sources wired into an Analyst, a failed and a stale feed excluded from the answer, and the lineage from the Strategist back to the two sources that reached it.
Design
How it is built
Blocks, wires, personas
A block is a live view of one source; a wire is an admitted edge, not a line drawn first; a persona answers from its inbound active wires and cannot choose its own inputs.
Typed ports
Declared ports are enforced when a wire is created. Compatible schemas connect; a mismatch is refused unless a text projection is chosen. Blocks with no ports stay connectable as untyped.
The inference ledger
Optional PostgreSQL records every model execution and the exact sources that fed it. When one persona feeds another, the ledger records which run was consumed, so a cascade stays walkable after the upstream blocks refetch. The canvas itself stays in IndexedDB and works with no server.
Capability compiler
An OpenAPI document, MCP tool schemas or a structured description compile into a capability manifest. One function registers it; write and destructive capabilities stay pending until approved; a manifest never grants itself authority; execution carries idempotency keys and reports an uncertain effect rather than guessing.
Keys stay server-side
Provider keys are read from the server environment and never sent to the browser. CI builds with canary values for every secret and fails if any reaches the client bundle.
Deployment posture
The full app is local-first and single-user. The public preview sets a demo flag that disables paid generation, keyed sources and ledger reads at the route level; the deployment checklist is published with the code.
Evidence
- Deployed
The limited public preview has run at omni.syberlabs.io since 2026-10-03, deployed by hand from a recorded commit on Cloudflare Workers.
- Tested
Unit tests across the stores, services and capability engine, and six Playwright specs including the “morning” golden path: shell → question → cited sources → crystal → second persona.
- Implemented
The capability compiler and the server-side broker are implemented and hardened against fixtures and stubbed transports.
- Not yet
No third-party API or MCP server has been measured in production use. Speech is tested with typed transcripts; there is no live microphone measurement. The hosted identity boundary exists in code with no provisioned issuer.
Reflects SyberLabs/Flyspace@e95ae73 · verified 2026-10-05. Each state is earned by code, a named test, a measurement under stated conditions, or a deployment; none is promoted by wording.
Facts
- Status
- Live preview
- Stage
- Local-first, single-user app with a limited public preview
- Formerly
- OmniOS, renamed in October 2026; the preview address, omni.syberlabs.io, keeps the old name for now
- Technology
- TypeScript, Next.js, React, Zustand, IndexedDB, PostgreSQL (optional), Tailwind CSS, Vitest, Playwright, Cloudflare Workers
- AI models
- Anthropic Claude, Google Gemini, and local models through Ollama; optional Kev persona suggestions
- Data sources
- Polymarket, CoinGecko, Hacker News, World Bank, OpenAlex, Metaculus, NewsAPI (keyed)
- License
- No license file yet; the repository is public