Installation¶
Atlantide is distributed two ways: as a standalone binary that bundles its own Python runtime, and as a package on PyPI.
| Standalone binary | PyPI package | |
|---|---|---|
| Python needed | no | 3.11 or newer |
| Providers available | the three built-in ones only | built-in and third-party plugins |
| Use it for | CI images, machines without Python, quick trials | anything using a provider plugin, or embedding the engine |
The second row decides most cases. It is covered under provider plugins below.
Standalone binary¶
Every release publishes a binary for three platforms on the releases page. Each is a single executable of roughly 30 MB with no external dependencies.
Linux (x86-64)¶
curl -L -o atlantide \
https://github.com/atlantide-org/atlantide/releases/latest/download/atlantide-linux-x86_64
chmod +x atlantide
sudo mv atlantide /usr/local/bin/
The binary is built on the current Ubuntu runner image and links against that image's glibc. On an older distribution, install from PyPI instead.
macOS (Apple silicon)¶
curl -L -o atlantide \
https://github.com/atlantide-org/atlantide/releases/latest/download/atlantide-macos-arm64
chmod +x atlantide
xattr -d com.apple.quarantine atlantide
sudo mv atlantide /usr/local/bin/
macOS blocks the binary until the quarantine flag is cleared
The published binaries are not code-signed or notarised. macOS marks anything downloaded with a quarantine attribute, and Gatekeeper refuses to run an unsigned executable carrying it, reporting that the developer cannot be verified.
The xattr -d com.apple.quarantine line above removes the attribute. As an
alternative, open the file once from Finder with right-click → Open and
confirm the prompt.
Windows (x86-64)¶
curl.exe -L -o atlantide.exe `
https://github.com/atlantide-org/atlantide/releases/latest/download/atlantide-windows-x86_64.exe
Move atlantide.exe to a directory on your PATH.
Confirm it runs¶
atlantide --version
atlantide 0.2.0
Provider plugins and the binary¶
Providers are discovered through the atlantide.providers entry-point group,
which requires them to be installed alongside atlantide as Python distributions.
A standalone binary has no site-packages for a plugin to be installed into, so it
advertises no entry points and uses only the providers compiled into it:
$ atlantide providers
3 provider(s)
┏━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ name ┃ types ┃ module ┃ summary ┃
┡━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ aws │ 25 │ atlantide.providers.aws │ AWS resources over boto3. │
│ local │ 3 │ atlantide.providers.local │ Files and no-ops on the local │
│ │ │ │ machine; needs no credentials. │
│ random │ 4 │ atlantide.providers.random │ Values generated once at apply │
│ │ │ │ and pinned in state. │
└────────┴───────┴────────────────────────────┴────────────────────────────────┘
If a config imports a third-party provider, install from PyPI. The binary cannot load one, and the failure presents as config being unable to find the provider's types — which reads like a typo rather than a missing plugin.
From PyPI¶
Requires Python 3.11 or newer.
uv tool install atlantide # standalone CLI, isolated environment
pipx install atlantide # the same, via pipx
uv add atlantide # into a project
pip install atlantide # into the current environment
For the CLI alone, uv tool install or pipx are the better choices: both keep
atlantide and its dependencies in their own environment rather than in the one
you are working in.
Use uv add or pip install when embedding the engine as a library, or when a
config imports a provider plugin — a plugin has to resolve in the same
environment as atlantide itself.
Extras¶
The Postgres state backend needs an extra, because it pulls in a database driver most installations do not need:
pip install 'atlantide[postgres]'
The sqlite and S3 backends need nothing beyond the base install.
Building the binary yourself¶
Useful for a platform with no published asset, or to pin a binary to a commit of your own:
git clone https://github.com/atlantide-org/atlantide
cd atlantide
make binary # uv run --extra build pyinstaller atlantide.spec --clean --noconfirm
The executable is written to dist/atlantide. A binary built this way bundles
whatever is installed in the build environment, so this is also how to produce one
that includes a provider plugin or the Postgres driver.
Verifying an installation¶
atlantide --version # the version, and that the executable runs at all
atlantide providers # which providers this installation can see
atlantide providers also lists any plugin that failed to load. That matters,
because a plugin which does not load is otherwise invisible: config simply cannot
find its types.
To confirm a working end-to-end setup without credentials or an AWS account,
follow the walkthrough. It uses the local
provider and creates only files on disk.
Upgrading and removing¶
uv tool upgrade atlantide && uv tool uninstall atlantide
pipx upgrade atlantide && pipx uninstall atlantide
pip install --upgrade atlantide && pip uninstall atlantide
To upgrade a standalone binary, download the new release over the old file;
atlantide --version confirms the replacement.
Upgrading does not touch state. If state is shared, note that a newer atlantide migrates the store forward automatically, while an older one refuses to read a newer store rather than misreading it. Upgrade every machine sharing a backend together — see Managing state.
Scaffolding a project¶
atlantide init writes a working project — atlantide.toml, a starter config
and a .gitignore — and compiles the result before reporting success:
atlantide init # `minimal` template, local state
atlantide init --template aws # an AWS starter instead
atlantide init --state s3 --bucket acme-atlantide-state \
--key prod/atlantide.json --lock-table atlantide-locks
--template takes minimal or aws; --state takes local, s3 or
postgres and writes the matching [state] table for you (--bucket, --key,
--lock-table for s3; --dsn, --schema for postgres). --secrets selects
keyfile, env or ssm. It refuses to overwrite existing files or to nest
inside another project unless given --force.
The minimal template needs no credentials, which makes it the shortest path to
seeing the engine skip an unchanged graph — see the
quickstart.
Next steps¶
- How it works — the mental model, then a walkthrough that needs no AWS account.
- Building on AWS — a multi-environment stack built one resource at a time.
- CLI — every command and flag.