Skip to content

feat(atlas): Add the atlas-deployer CLI - #231

Merged
tanmoysrt merged 6 commits into
developfrom
feat/atlas-deployer
Sep 11, 2026
Merged

feat(atlas): Add the atlas-deployer CLI#231
tanmoysrt merged 6 commits into
developfrom
feat/atlas-deployer

Conversation

@tanmoysrt

@tanmoysrt tanmoysrt commented Sep 11, 2026

Copy link
Copy Markdown
Member

Summary

atlas-deployer builds one Atlas bench in a Firecracker VM on a bare metal host and manages it after that. It gives a fresh machine a working Atlas control plane with one command.

What changed

  • Added scripts/atlas-vm/atlas_deployer.py, a Python CLI with create, start, stop, restart, status, ssh, logs, setup, resize, and destroy. create installs it as /usr/local/bin/atlas-deployer.
  • The VM belongs to atlas-pilot-vm.service. The unit runs a generated network script on start and stop, so the tap device and the firewall rules have one owner.
  • Configuration moves from atlas-vm.env to atlas-deployer.toml. The CLI renders the [pilot], [atlas], and [[image]] values into /root/atlas-vm.env in the guest, which setup.sh reads.
  • setup.sh builds one guest image for each [[image]] table, and publishes every image as a site file.
  • setup.sh gives the bench user a uv-managed Python 3.14 before it installs Pilot.
  • resize changes the vCPU count, the memory, and the disk, then grows the guest file system. A disk can only grow.
  • Added scripts/atlas-vm/README.md.

tanmoysrt and others added 3 commits September 12, 2026 02:21
atlas-deployer builds one Atlas bench in a Firecracker VM on a bare metal
host and manages it after that. It replaces the manual steps around
setup.sh with create, start, stop, restart, status, ssh, logs, setup,
resize, and destroy.

The VM belongs to the systemd unit atlas-pilot-vm.service, and the unit
runs a generated network script for the tap device and the firewall
rules, so one file owns the host network. The state in
/var/lib/atlas-vm/deployer.toml holds the resolved settings that every
command after create reads.

Configuration moves from atlas-vm.env to atlas-deployer.toml. The CLI
renders the pilot, atlas, and image values into /root/atlas-vm.env in the
guest, which setup.sh still reads. Each [[image]] table adds one guest
image, and setup.sh builds every variant as a site file.

setup.sh gives the bench user a uv-managed Python 3.14 before it installs
Pilot. Ubuntu 24.04 ships Python 3.12, which cannot parse the Atlas
sources, and Pilot validates an app with the interpreter that runs it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NSMPtPvysvhQ9pHQ8ttApK
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NSMPtPvysvhQ9pHQ8ttApK
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NSMPtPvysvhQ9pHQ8ttApK
@tanmoysrt tanmoysrt changed the title feat(atlas-vm): Add the atlas-deployer CLI feat(atlas): Add the atlas-deployer CLI Sep 11, 2026
tanmoysrt and others added 2 commits September 12, 2026 02:27
The deployer wrote /root/atlas-vm.env into the image it built, so every
guest disk carried the site password for its whole life. The deployer now
gives the file to the guest for one setup run and deletes it, with
setup.sh, when the run ends.

Also drop --verbose. A healthy boot stays quiet, and a boot that never
reaches Secure Shell still reports the last console lines.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NSMPtPvysvhQ9pHQ8ttApK
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NSMPtPvysvhQ9pHQ8ttApK
@greptile-apps

greptile-apps Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 4/5

The explicit property-design requirement must be satisfied before merging; verbose-option placement is also misleading.

Reviews (2) · Last reviewed commit: "fix(atlas-vm): Quote the values setup.sh..."

Comment thread scripts/atlas-vm/atlas_deployer.py Outdated
Comment thread scripts/atlas-vm/atlas_deployer.py
Comment thread scripts/atlas-vm/atlas_deployer.py
The deployer wrote raw key=value lines, and setup.sh sources them. A
password with a space became a command, and a metacharacter changed what
the shell ran. Every value is now quoted shell, and setup.sh quotes the
password again for the login shell that `su -` starts.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NSMPtPvysvhQ9pHQ8ttApK
Comment thread scripts/atlas-vm/atlas_deployer.py
Comment thread scripts/atlas-vm/atlas_deployer.py
@tanmoysrt
tanmoysrt merged commit 6604ed3 into develop Sep 11, 2026
4 checks passed
@tanmoysrt
tanmoysrt deleted the feat/atlas-deployer branch September 11, 2026 21:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant