A template is a Dockerfile + skeleton/ + aetherion-src/ bundle that
create namespace forks into a namespace's build dir. Aetherion ships eight
built-in templates, carved up by responsibility so you only pay for what you
use:
| Template | Tier | Default command | What it's for |
|---|---|---|---|
base |
minimal | bash |
A bare Debian shell + prompt; a clean room for one tool. |
default |
toolchains | bash |
Language toolchains (Python, Node, Go, Rust, Ruby, C/C++). Bootstrapped on first run. |
nvim |
editor | nvim |
default + Neovim 0.11.x + a full LSP/DAP stack. |
cli-agents |
agents | bash |
default + every vendor agent CLI + conduit. |
vscode-ide |
GUI | code . |
Microsoft VS Code (Electron) with X11 forwarding. |
cursor-ide |
GUI | cursor . |
Cursor IDE (Electron) with X11 forwarding. |
zed-ide |
GUI | zed . |
Zed (native Rust GPU editor) with X11 forwarding + ACP-ready. |
antigravity-ide |
GUI | antigravity . |
Google Antigravity (Electron VS Code fork + bundled Cascade Gemini agent) with X11 forwarding. |
Layering principle. The tiers are peers, not a stack. nvim, cli-agents,
and the four IDEs each build on the same language-toolchain base as default;
the IDEs are deliberately lighter (no agents, no LSP servers — except where the
IDE itself bundles them). Editors and agents are orthogonal — run them in
separate namespaces and switch between them, or fork a template to combine them
(see custom templates).
All templates share the same identity contract (user aetherion, UID 1000,
$HOME=/home/aetherion, starship prompt) and support both amd64 and arm64,
on Linux and macOS, with podman or docker.
Minimal aetherion shell: Debian + starship +
lsof/netstat. No toolchains.
aetherion sandbox --create base # create 'sandbox' from base, enter a shell
aetherion sandbox # re-enter laterThe smallest template: debian:trixie-slim with bash, bash-completion, less,
locales, lsof, net-tools, curl, ca-certificates, and the starship prompt.
No languages, no editor, no agents.
Use it when you want a clean room to install a single tool into without dragging in language ecosystems, or as the leanest base to fork your own template from.
The language-toolchain baseline. Bootstrapped automatically on first run.
aetherion # first run bootstraps the 'default' namespace
aetherion build --create default # or create another namespace from itBuilt on debian:trixie-slim. Ships the mainstream language toolchains and the
tools you need to build software in them:
- Languages & runtimes: Python (system +
uv), Node.js LTS +bun, Go, Rust (rustup + clippy + rustfmt), Ruby, and a C/C++ toolchain (clang, lld, cmake, ninja). - Build & CLI tools: git, git-lfs, make, tmux, ripgrep, fd, fzf, jq, yq, socat, openssh-client.
- Containers: podman-in-container (podman, fuse-overlayfs, slirp4netns, crun) so you can build/run containers from inside a namespace.
It has no template.yaml, so it's universally portable and its default
command falls through to bash. There is no editor and no agent CLI here —
those are in nvim and cli-agents.
Use it when you want a general-purpose multi-language build environment and
will bring your own editor (host editor, or a separate nvim namespace).
Language toolchain + Neovim 0.11.x + full LSP/DAP stack.
aetherion edit --create nvim # create 'edit' from nvim, open Neovim
aetherion edit # re-enter (opens Neovim)
aetherion edit bash # drop to a shell insteadEverything in default, plus Neovim 0.11.x (built from upstream —
Debian's package is too old for current nvim-lspconfig) and a complete,
pre-wired LSP/DAP toolset:
- LSP servers:
lua-language-server,rust-analyzer,gopls,pyright,typescript-language-server,vim-language-server. - DAP adapters:
debugpy,delve,codelldb,js-debug-adapter. - A full Lua config tree under
~/.config/nvim/(lazy.nvim plugin spec, Telescope, treesitter, nvim-cmp, which-key, a dashboard, themes). Plugins and treesitter parsers bootstrap on first launch (kept out of the image to stay small), so the firstnvimstart in a namespace fetches them once.
template.yaml sets command: nvim, so bare aetherion <ns> opens the editor.
EDITOR/VISUAL are set to nvim so git, sudo, etc. open it too.
Use it when you want a full TUI editor that lives inside the aetherion ecosystem — and as the recommended editor to layer into your own templates.
Language toolchain + every vendor CLI agent +
conduit.
aetherion agents --create cli-agents # create 'agents', enter a shell
conduit set endpoint ollama # point at a host model server
conduit launch claude # pick a model, launch Claude CodeEverything in default, plus the agent CLIs and the conduit
bridge. This is the only template that ships conduit.
- Agent CLIs: Claude Code (
claude), OpenAI Codex (codex), GitHub Copilot CLI (copilot), Gemini CLI (gemini), Pi (pi), Cursor Agent (agent/cursor-agent), OpenClaw (openclaw), Hermes (hermes). - conduit: configures and launches the agents against a local
OpenAI-compatible model server. conduit has built-in integrations for
claude,codex,copilot,pi,openclaw,hermes, anddroid(Factory's agent, not installed by default but supported if you add it). See conduit design.
Default command is bash — agents are CLI tools you invoke in the shell.
Use it when you want to run AI coding agents pointed at a local model. Pair
it with a separate nvim namespace, or your host editor, for editing.
Publishing OpenClaw's gateway. OpenClaw binds its gateway to
127.0.0.1inside the container, which port-forwarding can't reach directly. Useaetherion agents --forward-openclawto publish it and set up the loopback bridge in one shot. See the README's "Publishing in-container ports" section.
Microsoft VS Code (Electron, native amd64/arm64) with X11 forwarding.
aetherion ide --create vscode-ide # create 'ide' from vscode-ide, open VS Code
aetherion ide # re-enter (opens `code .`)
aetherion ide bash # drop to a shell insteadBuilt on debian:stable-slim. A GUI tier focused on running VS Code with an X11
GUI forwarded to your host — not a superset of default (no agents, no LSP
servers bundled; install extensions inside instead).
- VS Code from Microsoft's signed apt repo (native per-arch).
- Electron/Chromium runtime libs, X11 client libs, fonts.
- Firefox-ESR so GitHub OAuth sign-in completes inside the namespace
(
vscode://callbacks route back to the in-container Code).
template.yaml sets display: x11 and command: code ., so a namespace gets
X11 forwarding and opens VS Code on your mounted project directory.
Use it when you want VS Code with namespace isolation. Works on Linux and on macOS via XQuartz (see display forwarding).
Cursor IDE (Electron, native amd64/arm64) with X11 forwarding.
aetherion ide --create cursor-ide # create 'ide' from cursor-ide, open Cursor
aetherion ide # re-enter (opens `cursor .`)
aetherion ide bash # drop to a shell insteadStructurally identical to vscode-ide, but ships the Cursor
AppImage (extracted at build time; the FUSE mount is fragile in rootless
containers) instead of VS Code. Same Electron/X11 plumbing and bundled
Firefox-ESR for cursor:// OAuth callbacks.
template.yaml sets display: x11 and command: cursor ..
Use it when you want Cursor's agentic IDE with namespace isolation. Same
Linux/macOS support and the same XQuartz path on macOS as vscode-ide.
Zed (native Rust GPU editor, native amd64/arm64) with X11 forwarding.
aetherion ide --create zed-ide # create 'ide' from zed-ide, open Zed
aetherion ide # re-enter (opens `zed .`)
aetherion ide bash # drop to a shell insteadDifferent shape from vscode-ide / cursor-ide:
those are Electron (Chromium) apps with a fat libgtk/libnss/libgbm runtime and
a --use-gl=angle wrapper trick for the no-GPU case. Zed is a native Rust app
that paints via Vulkan, so the dep set is different and the no-GPU fallback is
Mesa's lavapipe software ICD (shipped in mesa-vulkan-drivers) with
ZED_ALLOW_EMULATED_GPU=1 exported by the wrapper when /dev/dri is absent.
- Zed from the official
cloud.zed.devtarball (native per-arch, extracted to/opt/zed.app/). Channel + version pinnable viaZED_CHANNELandZED_VERSIONbuild args. - Vulkan loader + Mesa ICDs (hardware on Linux with
/dev/dri, lavapipe software fallback on macOS/XQuartz). - X11 client libs, fonts, Firefox-ESR for in-namespace OAuth.
Default Zed settings (skeleton at ~/.config/zed/settings.json):
- Sign-in button hidden, telemetry (diagnostics + metrics) off, auto-update disabled (rebuild the image to refresh Zed).
- Three-column layout: file tree pinned to the left (
project_panel.dock: "left"— Zed defaults to right), agent / threads / chat panel pinned to the right (agent.dock: "right"andagent.sidebar_side: "right"so the inner thread list hugs the window edge). Git and outline panels also dock right for a consistent "files left, everything else right" split.
Auto-opening the agent panel on first launch isn't settings-controllable yet
(only project_panel has a starts_open key — see Zed issue #51542);
open it once with ctrl-? and Zed's default restore_on_startup: "last_session"
keeps it open on subsequent launches into the same namespace.
Everything else is Zed's vanilla defaults. Flip any of them back per-namespace if you want.
Agent CLIs (ACP): Zed's Agent Panel can talk to Claude Code, Gemini,
Codex, Copilot, and other ACP agents. None of those CLIs are pre-installed
here — Zed's first-use download path lands them in ~/.local/share/zed/ in
the namespace, which persists across launches. If you want them on PATH
system-wide instead (and conduit to wire them at a local model), use a
separate cli-agents namespace, or fork zed-ide to layer the
agent installs in.
template.yaml sets display: x11 and command: zed ..
Use it when you want Zed with namespace isolation. Same Linux/macOS support and the same XQuartz path on macOS as the Electron IDEs — though Vulkan-over-XQuartz via lavapipe is slower than ANGLE/SwiftShader for the Electron apps, so on macOS the Electron templates currently feel snappier.
Google Antigravity (Electron VS Code fork with bundled Cascade Gemini agent, native amd64/arm64) with X11 forwarding.
aetherion ide --create antigravity-ide # create 'ide' from antigravity-ide, open Antigravity
aetherion ide # re-enter (opens `antigravity .`)
aetherion ide bash # drop to a shell insteadStructurally identical to vscode-ide — Antigravity is Google's
VS Code / Code-OSS fork, with the same Electron/Chromium runtime and the same
/usr/share/<name>/<binary> install layout the .deb plants. Same X11 plumbing,
same --use-gl=angle --use-angle=swiftshader no-GPU wrapper fallback, same
bundled Firefox-ESR for in-namespace OAuth (here routing antigravity://
callbacks).
What's different is what's baked into the IDE itself: Antigravity ships with
Google's Cascade agent in-tree (no extension install needed), with Gemini
3.x Pro/Flash as the primary model and Claude / gpt-oss as alternates. The
agent surface needs a Google account to function — the editor itself works
without one. There's a separate agy terminal CLI Google ships; it's not
pre-installed here (run the upstream install line if you want it).
- Antigravity from Google's signed apt repo at
us-central1-apt.pkg.dev/projects/antigravity-auto-updater-dev(native per-arch). Pin a version with theANTIGRAVITY_VERSIONbuild arg, or leave unset to track the apt channel. - Electron/Chromium runtime libs, X11 client libs, fonts,
libsecret-1-0for keyring-backed credential persistence. - Firefox-ESR so the Google sign-in / Cascade auth flow completes inside the
namespace (
antigravity://callbacks route back to the in-container IDE).
Default Antigravity settings (skeleton at
~/.config/Antigravity/User/settings.json): telemetry off
(telemetry.telemetryLevel: "off" — covers both VS Code's telemetry pipeline
and Antigravity's own usage reporting on top), auto-update disabled
(update.mode: "none"), extension auto-update disabled. Everything else is
vanilla VS Code-fork defaults. Settings keys mirror upstream VS Code.
template.yaml sets display: x11 and command: antigravity ..
Use it when you want Google's agentic IDE with namespace isolation. Same
Linux/macOS support and the same XQuartz path on macOS as vscode-ide.
During testing, it was not possible to resize or move the window.
On multi-monitor setups, it launched mostly off screen.
The decision was not to tailor aetherion to fix this, the solution belongs to XQuartz or Antigravity.
aetherion list templates # baked-in + user templates, with statusTo build on any of these — combine an editor with agents, pin tool versions, add your own dependencies — see Custom templates.