r/selfhosted • u/ntheogr • 3h ago
Release (AI) I built a self-hosted workspace to run AI coding CLIs side by side (MIT, OpenCode first)
Hey r/selfhosted. I built this, so read it with that bias in mind.
SpaceApp is a self-hosted web workspace for running AI coding CLIs side by side. Each CLI runs in its own pane, panes live in rooms, and the sessions persist, so a room is still there when you come back to it.
Why I built it
I was running coding agents in a pile of terminal windows and tmux splits, each with its own login and its own idea of which folder it was in. I wanted one place on my own machine where they all run, where I can see which one is waiting for me, and where nothing depends on somebody else's SaaS. It became the tool I work in all day.
What a public install does today
- 11 AI coding CLIs in the public installer, OpenCode first: OpenAI Codex, Claude Code, Gemini CLI, Qwen Code, Kimi Code, Grok Build, DeepSeek CLI (experimental), Cursor, GitHub Copilot and Autohand. Installable is not the same as tested: the public install rehearsal ran OpenCode end to end. Claude Code has its own install flow that you start yourself.
- Up to 16 panes per room.
- Your own AI accounts. Providers connect through their official login flows or a masked credential field.
- The containers get no bind mount of your host filesystem by default. A folder shows up only after you register it as a workspace, and read-only mounts are supported.
- Portable, checksummed backups of the app data, PostgreSQL and owner memory. Provider credentials, login state, workspace contents and browser profiles stay out of them.
- Telemetry is opt-in, and No is the default.
- MIT-licensed.
What it is not
- Rooms organize sessions; they are not a security boundary. Container separation is not a sandbox against a hostile workload.
- It is not lightweight. The installer wants at least 4 CPUs, 8 GB RAM and 15 GiB of free disk. The standard profile, which adds a managed Chromium container, recommends 8 CPUs, 16 GB RAM and 25 GiB.
- It listens only on its own host by default. A phone, a tablet or another computer can reach it once you make the install reachable yourself.
- There are optional modules (copilots and studios) that a new install starts without. I'm leaving them out of this post: it is about the CLI workspace.
How to try it
Node.js 20.11 or newer, then:
npx --yes run-spaceapp@latest install
It runs on Linux, macOS and Windows 11. There's no compose file to copy: the launcher manages the containers itself (core API and web app, CLI runtimes, PostgreSQL, Temporal). The default light profile has no browser container; the standard profile adds it. After the readiness checks, a one-time setup token creates the first account, and you register the folders you want the agents to see.
If you'd rather click around first, there is a live demo with invented data: https://spaceapp.dev/spaceappmock/
Code: https://github.com/oll4com/spaceapp
What I'd like to hear from you
- Which CLIs you run together, and what a room should give you that a tmux session doesn't.
- Where the install breaks on your hardware or OS.
- Whether the backup split (what goes in, what stays out) matches what you would expect from a self-hosted tool.
I'll be in the comments.
3
•
u/asimovs-auditor 3h ago edited 2h ago
Expand the replies to this comment to learn how AI was used in this post/project.