Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

ATC documentation

atc ships software to robots over SSH. You push a versioned bundle or an OCI image, the device checks every byte against its digest, and you switch to it when you’re ready. If the new version misbehaves, you switch back. The device keeps recent versions on disk, as many as its retention settings allow, so a rollback to one of them downloads nothing.

New here? Start with Onboarding. You install a released atc binary, with no repo to clone and nothing to build, and ship your first verified update in six steps.

DocTypeRead it when you want to…
OnboardingQuickstartInstall the released atc CLI and ship your first update. Start here
Deploy your first updateQuickstartShip an update end to end from a released atc. Covers devices without systemd, containers included, and has a troubleshooting table
Logging inQuickstartLog a person in to a control plane with atc auth login. Covers the none, token, local and WorkOS modes, several profiles, logout and common errors
atc.toml referenceReferenceWrite an atc.toml, the default manifest. Covers the schema and every lifecycle-hook detail, from state and phase to @self, @bundle and the environment
atc.kdl referenceReferenceWrite an atc.kdl, the opt-in alternative to atc.toml. Lists every node you can write today, what atc config lint checks, and what a push still refuses
Private CA trustGuidePoint atc and atcd at a private CA, so a device can enroll with a self-hosted, air-gapped or lab control plane
Remote access without a VPNGuideReach a robot behind NAT or an egress-only firewall through the reverse tunnel built into atcd. No mesh VPN, no extra agent, and one config block you can delete
Lifecycle hook cutoverRunbookFind out whether an existing commit.* hook has to move, now that the version pointer flips earlier, inside activate
Modules todayReferenceShip a module, an executable the device runs after a delivery commits, and see which parts of the module vocabulary work today
Shared-library resolutionRunbookFix a delivered binary that dies with error while loading shared libraries when the library is right there in the tree
Device locationGuidePut a device on the console map. A program on the device sends its position with atcd attr set-location, and four settings decide how often atcd passes it on
Error codesReferenceLook up an ATC-Exxxx code that atc printed
Migrating from Mender or balenaGuideMove an existing OTA setup onto atc. Concept maps, device and CI steps, and a cutover checklist for each
Verifying the binaryReferenceCheck that the atc or atcd you run is the one we released, with its sha256 digest and the ed25519-signed release index

Also useful: