Software runs in user space or kernel space. Exospace runs outside the machine entirely.
Exospace is a portable AI assistant that plugs into a computer or phone over one USB-C cable. It sees the screen through HDMI capture and controls it by acting as a USB keyboard, mouse and touchscreen. Press the button, say what you want, and it does it. Nothing is installed on the target, and it remembers your conversation and task as you move between devices.
Built at SwampHacks XII (October 16–18, 2026).
target ◄═ one USB-C ═► USB-C hub ─HDMI─► capture card ─USB─► Pi 5 ("brain") ◄──► hosted model APIs
└─USB-A─► Pico ("hands") ◄─UART─┘
- Pi 5 (brain): captures the screen, listens to the user, keeps memory, runs the agent loop and controller. It has its own power, so swapping targets never reboots it.
- Pico (hands): shows up on the target as a keyboard, absolute mouse and touchscreen, and runs commands from the Pi.
- Models (race architecture): for every spoken request, Jev 1.14 and the language model (Gemini 3.8 Flash or z.ai GLM, interchangeable) start at once. If Jev confidently sees one control to click, it acts in about a second and Flash's plan is thrown away; remarks are remembered without touching anything; everything else uses Flash's plan, grounded and checked step by step by Jev. Anything irreversible (send, delete, pay, BIOS changes) waits for a spoken "yes". Measured: 89% task success vs 53% for a Flash-planner-only agent, with 0 unsafe actions (bench/arch/README.md). No separate slow planner or B200 is required. An isolated browser backend supports testing before the hardware adapter is available.
- Any screen, one path: the same prompts and controller drive every device; the detected OS only picks touch or mouse input. A run survives a restart, replug or blank screen and continues the same goal.
- Voice: a push-to-talk page (one button or the Space bar, so a single accessibility switch works) sends what you say to the agent and speaks back its questions and results.
| Path | What | Owner |
|---|---|---|
brain/ |
Pi-side runtime: capture, HID client, controller, agent loop (README) | Hardware / Agent |
brain/agent/ |
Race executor, triage, planner, memory (README) | Agent |
brain/skills/ |
Keyboard skills: open_app, hover, wait |
Agent |
brain/voice/ |
Voice layer: push-to-talk page, Deepgram relay, narration (README) | Demo |
brain/display/ |
Touch display and projector page | Demo |
firmware/pico/ |
CircuitPython HID firmware for the UART protocol (README) | Hardware |
scripts/pi/ |
Deploy to the Pi, setup, user services | Hardware |
bench/ |
Architecture studies and benchmarks behind every claim (README) | Models |
tests/ |
Offline tests (no API calls) | All |
- Copy
.env.exampleto.envand fill in the keys: z.ai or Gemini (interchangeable, either one runs everything), TypeSafe/Jev, and Deepgram for voice. - Python 3.11+:
python3 -m venv .venv, then.venv/bin/python -m pip install -e '.[voice,browser]'. - Try it without hardware, on a web page in an isolated browser:
.venv/bin/python -m brain --backend browser --url https://example.com --os linux --display 8770 .venv/bin/python -m brain.voice.layer --agent http://127.0.0.1:8770 # then open :8780 - On the Pi:
scripts/pi/deploy.shfrom the laptop, then follow docs/hardware-bringup.md. - Tests:
.venv/bin/python -m unittest discover -s tests(offline, no API calls).
| Read | For |
|---|---|
| PLAN.md | Goals, non-goals, architecture, the shared contracts, owners, the model decision |
| HANDOFF.md | Current status, known issues, what is waiting on hardware |
| brain/README.md | Running the runtime, how a request flows, modules, touch display |
| docs/hardware-bringup.md | Wiring, Pi setup, bring-up order, pre-demo checklist |
| docs/demo.md | The demo script and fallbacks |
| docs/devpost.md | Devpost draft |
| bench/arch/README.md | The measurements behind the architecture |
Agent-driven KVM devices already exist, including KaiVM, Sipeed NanoKVM-Go and kvm-pilot. Exospace focuses on speed (with measured results), continuity across devices with automatic adaptation, and voice control you can interrupt.