Files
Panama/.gitignore
T
Gabriel Brown f33da41cc6 Panama learns what a server is: from a root login to running containers
A machine's role is now the interview's first question and the one answer
Panama records. Servers get the same shell minus the screen: core packages,
nvm, Bun, Claude Code and Codex (desktops get Codex too), linger, rootless
ports from 80, firewalld, the nginx-bridge network, and a nightly image
updater that replaced watchtower for cause.

server/containers/ carries junior's 23 compose services -- secrets moved to
per-machine .env files that never enter this public repo, every transformed
compose proven to render byte-identical to what is live. 'panama server'
enables, disables and relinks them; nothing here restarts a running service.
'boot --server' walks a fresh VPS from its root login to a normal install.

Five new contracts pin the secrets rule, the catalog's shape, panama-server's
behavior, the role plumbing, and the dotfile classification.

Claude-Session: https://claude.ai/code/session_01NU5JGiN3JfzqrLQB6wmJ1E
2026-08-25 23:11:49 -04:00

49 lines
2.0 KiB
Plaintext

# Ignore bash environment variables, and the lock its writer takes.
/config/bash/env
/config/bash/.env.lock
# Server secrets and state never enter the repo: live .env files belong in
# ~/Server/<Name>/ (only compose.yml is symlinked back here), and data/ is
# the bind-mount convention. Ignored anyway as a seatbelt -- the repo is
# public, and tests/server/compose-secrets-contract is the check that this
# line still exists.
/server/containers/**/.env
/server/containers/**/data/
# Personal espanso triggers (name, email), seeded per-machine by setup-identity.
/config/dot/espanso/match/identity.yml
# Ignore backups of old config files
/config/old
# Ignore Wireguard config of course!
/config/wg/**
# Ignore Neovim lazy-lock file
/config/dot/nvim/lazy-lock.json
# Local visual-companion sessions and generated design mocks.
/.superpowers/
# Local linked worktrees used for reviewed feature development.
/.worktrees/
# Python helper bytecode is local runtime state.
__pycache__/
*.py[cod]
# Generated from the color scheme; machine state, not configuration.
/config/dot/kitty/current-theme.conf
# Generated from the color scheme; machine state, not configuration.
/config/dot/gtk-3.0/settings.ini
/config/dot/gtk-3.0/bookmarks
/config/dot/gtk-4.0/settings.ini
/config/dot/tmux/current-theme.conf
/config/dot/hypr/hyprlock.conf
# The Firefox chrome override sheet, rendered from the active theme. It sits
# beside custom.css because chrome/ is symlinked into the profile as one
# directory; custom.css imports it and stays the file a person edits.
/config/firefox/chrome/panama-theme.css
/config/firefox/chrome/panama-theme.css.tmp
# Build products of the Vicinae extension. The source is the repository's; the
# dependency tree and the bundle it produces are machine state, rebuilt by
# `panama apps`.
/config/local/share/vicinae/extensions/*/node_modules/
/config/local/share/vicinae/extensions/*/dist/
/config/local/share/vicinae/extensions/*/build/
/config/local/share/vicinae/extensions/*/package-lock.json