Dev container launcher for AI coding agents
Project description
Aetherion
A containerized development environment for AI coding agents.
Ships a Debian dev container preloaded with the four major agent CLIs (Claude
Code, Cursor Agent, GitHub Copilot CLI, Gemini CLI), Neovim with LSP/DAP
support, podman-in-podman, and toolchains for Python, Node, Go, Rust, and
Ruby. The aetherion launcher mounts the current directory at the same path
inside the container and preserves per-agent login state across sessions.
Install
uv tool install aetherion
(or pipx install aetherion)
Quickstart
aetherion --build-image # one-time: build localhost/aetherion:dev
aetherion # launch a shell in $PWD
What's in the container
- Languages & runtimes: Python (system + uv), Node (via bun), Go, Rust, Ruby, C/C++ toolchain
- Agent CLIs: Claude Code, Cursor Agent, GitHub Copilot CLI, Gemini CLI
- Editor: Neovim with bundled LSPs (
pyright,gopls,rust-analyzer,lua-language-server,typescript-language-server,vim-language-server) and DAPs (debugpy,delve,codelldb,js-debug-adapter) - CLI tools: git, podman, tmux, starship, ripgrep, fd, fzf, jq, yq, posting, openssh-client
State preservation
The first time you log in to a bundled agent CLI, the launcher detects the new
config inside the container and copies it to ~/.aetherion/data/ on the host.
Subsequent launches bind-mount the saved config so you stay logged in.
~/.aetherion/data/ is the only host directory the launcher writes to.
| agent | preserved paths |
|---|---|
claude |
.claude/, .claude.json |
cursor |
.cursor/, .config/cursor/ |
copilot |
.copilot/ |
gemini |
.gemini |
Flags
| flag | purpose |
|---|---|
--agents LIST |
Comma-separated subset of agents to expose (default: all). --agents '' for none. |
-e, --env NAME=VALUE |
Set a container environment variable. Repeatable. Quote at the shell for values with spaces: --env 'NAME=has spaces'. A bare --env NAME inherits from the host environment. |
--image REF |
Image ref to run, and to tag when building. Default: localhost/aetherion:dev. |
--build-image |
Build the image and exit. Does not launch the container. |
--build-dir PATH |
Build context directory. Defaults to the Dockerfile bundled with the launcher. |
--extract PATH |
Copy the bundled Dockerfile, skeleton/, and scripts/ to PATH and exit. |
AETHERION_CONTAINER_RUNTIME=docker overrides runtime auto-detection (podman is preferred when both are available).
Customizing the image
The launcher ships its own Dockerfile and skeleton tree inside the Python package. To fork them:
aetherion --extract ~/my-aetherion
$EDITOR ~/my-aetherion/Dockerfile
aetherion --build-image --build-dir ~/my-aetherion --image my:tag
aetherion --image my:tag
Development
git clone https://github.com/samintheshell/aetherion
cd aetherion
uv sync
uv run aetherion --help
Build and publish the Python package with the included Makefile:
make # show available targets
make build # produce sdist + wheel in dist/
make publish # upload dist/* to PyPI (UV_PUBLISH_TOKEN required)
The container image itself has uv plus the standard CPython toolchain
installed, so you can also run make publish from inside an aetherion
shell if you prefer keeping credentials in the container.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aetherion-0.1.0.tar.gz.
File metadata
- Download URL: aetherion-0.1.0.tar.gz
- Upload date:
- Size: 39.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4165f3bf3a0e7c79e1b1a73b3558a1a310160af04ecacc9941061e8b4828f454
|
|
| MD5 |
b3cff62b7abd6ef42265f13017ff3fd5
|
|
| BLAKE2b-256 |
d519b267afe8f59fb9de3f34ee3ccacda87604b84796c6d92221081272b216b4
|
File details
Details for the file aetherion-0.1.0-py3-none-any.whl.
File metadata
- Download URL: aetherion-0.1.0-py3-none-any.whl
- Upload date:
- Size: 51.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
04c25a34ac48f79022755bf8f48c6598939e0b7aa254c1fde6224855b7977d22
|
|
| MD5 |
af72100311cc2fdd8997460b07b2d835
|
|
| BLAKE2b-256 |
ebc3ab6354bbcccfd24c185869b9ff10b05dbad623581194e34a0eedfb7f65cf
|