Deployment

August 7, 2026 ยท View on GitHub

aide stores all config and encrypted secrets under ~/.config/aide/. Encrypted secrets use age/sops and are safe to commit to git. Only holders of the age private key can decrypt them.

Git-Tracking Your Config

cd ~/.config/aide
git init
git add -A
git commit -m "Initial aide config"

Push to any remote. On a new machine, clone and you're running:

git clone git@github.com:you/aide-config.git ~/.config/aide

Keep your age private key out of the repo. Store it separately (password manager, encrypted backup).

Team Shared Config

Each team member clones the shared config repo:

git clone git@github.com:your-org/aide-config.git ~/.config/aide

Add each member's age public key as a recipient (they run age-keygen -y ~/.config/sops/age/keys.txt on their own machine to derive their public key from their private key, and send you the age1... output):

aide secrets rotate work --add-key age1alicepubkey...

Commit and push the re-encrypted secrets. Every team member decrypts with their own private key. No plaintext is ever shared.

To remove a member, remove their key and rotate:

aide secrets rotate work --remove-key age1abc...
git add -A && git commit -m "Revoke alice's access"

Docker / CI

Embed config in the image and inject the age key at runtime via environment variable. Do not bake the private key into the image.

Dockerfile:

FROM your-base-image

COPY --chown=app:app /path/to/aide-config /home/app/.config/aide

RUN aide --version

Run with the age key injected:

docker run -e SOPS_AGE_KEY="$(cat ~/.config/sops/age/keys.txt)" your-image aide --agent claude -- -p "run tests"

GitHub Actions:

Store the age private key as a repository secret named SOPS_AGE_KEY.

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Restore aide config
        run: git clone git@github.com:your-org/aide-config.git ~/.config/aide

      - name: Run aide
        env:
          SOPS_AGE_KEY: ${{ secrets.SOPS_AGE_KEY }}
        run: aide --agent claude -- -p "run tests"

Multiple Machines

Generate one age key per device:

age-keygen -o ~/.config/sops/age/keys.txt

Add each device's public key as a recipient:

aide secrets rotate work --add-key age1device2pubkey...

If a device is lost, revoke it by removing its key and rotating:

aide secrets rotate work --remove-key age1lostdevice...
git add -A && git commit -m "Revoke lost laptop key"

All remaining devices can still decrypt. The lost key can no longer access any secrets.