No description
  • Python 53.7%
  • Shell 19%
  • Go 13.9%
  • Go Template 4.9%
  • Nushell 3.5%
  • Other 5%
Find a file
Kai Siren b59bf85a0b
Some checks are pending
release-please / release-please (push) Waiting to run
Add dictatable-ID alphabet spec
Documents the character set for short IDs that get spoken aloud. Keyed
off the agent-channel channel-ID alphabet, which already drops the
visually-ambiguous I L O 0 1. Extends it with three phonetic drops: N
for the M/N nasal pair, 3 for th-fronting fragility, 2 for the two/to/
too homophone. Final alphabet is 28 characters.

closes #146

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 13:38:05 -07:00
.agents/skills chore: migrate skill directory to .agents/skills 2026-05-22 00:12:31 -07:00
.coily fix(coily): warp verb uses go run -C warp . so go finds warp/go.mod 2026-05-21 06:38:18 -07:00
.github/workflows chore(ci): remove codex-review-gate + undraft-and-poke-codex workflows 2026-05-16 15:41:53 -07:00
agentic_os fix: correct canonical skill directory to .agents/skills 2026-05-21 23:56:43 -07:00
brew feat: run Warp Preview as the Mac daily-driver channel 2026-05-20 01:53:27 -07:00
docs Add dictatable-ID alphabet spec 2026-05-22 13:38:05 -07:00
hammerspoon feat: run Warp Preview as the Mac daily-driver channel 2026-05-20 01:53:27 -07:00
scripts feat: agent-name.sh defers to coily agent-name as source of truth 2026-05-22 01:59:25 -07:00
static Move wallpaper.jpg to static/ and wire as WezTerm background 2026-05-13 19:36:05 -07:00
warp fix(warp): render theme into Roaming data dir on Windows 2026-05-21 11:57:45 -07:00
zsh Promote install to setup.sh, add zsh host-local override hook 2026-05-21 17:38:44 -07:00
.gitignore gitignore: ignore __pycache__ and .pyc 2026-05-16 15:49:59 -07:00
.pre-commit-config.yaml feat(warp): add coily exec warp config tool 2026-05-21 05:44:29 -07:00
.pre-commit-hooks.yaml chore: migrate skill directory to .agents/skills 2026-05-22 00:12:31 -07:00
.release-please-manifest.json chore(main): release 0.2.3 (#69) 2026-05-16 15:52:03 -07:00
AGENTS.md chore: migrate skill directory to .agents/skills 2026-05-22 00:12:31 -07:00
CHANGELOG.md chore(main): release 0.2.3 (#69) 2026-05-16 15:52:03 -07:00
CLAUDE.md Add standard repo baseline: AGENTS, CLAUDE, FEATURES, coily.yaml 2026-05-13 19:41:12 -07:00
pyproject.toml fix: correct canonical skill directory to .agents/skills 2026-05-21 23:56:43 -07:00
README.md feat: agent-name.sh defers to coily agent-name as source of truth 2026-05-22 01:59:25 -07:00
release-please-config.json feat: auto-versioning via release-please + conventional-commit hook 2026-05-15 22:59:22 -07:00
setup.sh feat: agent self-name status line and SessionStart hook 2026-05-22 01:49:33 -07:00

agentic-os

Sombra hacking skull

Cross-platform shell + terminal setup. Zsh on Mac, Linux, and Windows (Git Bash). Warp on Mac and Windows; both configs (warp/settings.toml, warp/tab_configs/startup_config.toml) symlinked into ~/.warp/.

Layout

  • zsh/zshrc - top-level entry, symlinked to ~/.zshrc. Sources env.zsh, picks the right hosts/<os>.zsh, then config.zsh and ssm-env.zsh.
  • zsh/env.zsh - history, identity, editor, AWS defaults, COILY_LOCKDOWN_ROOT.
  • zsh/hosts/{macos,linux,windows}.zsh - per-host PATH and tooling. Picked automatically via uname -s.
  • zsh/config.zsh - aliases, git helpers, rg wrapper, prompt (two-line siren motif).
  • zsh/ssm-env.zsh - in-process AWS SSM secret loader. ssm-load reads /coilysiren/* into the current shell env. Never disk.
  • warp/settings.toml - Warp config. Vertical tabs, theme, font, custom secret-regex list, AI/agent toggles. [account] is_settings_sync_enabled = false so the repo wins over cloud sync.
  • warp/tab_configs/startup_config.toml - default new-tab pane setup.
  • scripts/ - portable utilities not specific to the shell.
    • verbatim-echo.sh - wrap a command's output in a fenced block clipped to 20 lines / 100 chars per line. Chat-safe dumps for mobile.
    • check-aws-config.py - reject the [profile default] trap in ~/.aws/config that surfaces later as a cryptic NoRegion from SSM/S3.
    • gpg-ssm / gpg-ssm.cmd - GPG signing wrapper that pulls the passphrase from AWS SSM at /coilysiren/gpg-passphrase/<keyid> instead of caching it on disk. Wire-up Mac/Linux: git config --global gpg.program "$HOME/.local/bin/gpg-ssm". Wire-up Windows: same but point at gpg-ssm.cmd, a bash.exe shim Git for Windows needs because it can't invoke extensionless shebang scripts reliably.
    • check-commit-closes-issue.py - commit-msg hook rejecting commits that lack a same-repo closes #N / fixes #N / resolves #N.
    • agent-name.sh - decorate the agent self-name for the Claude Code status line or the SessionStart hook. The name comes from coily agent-name (the source of truth) with a local fallback when coily is absent.
    • install-agent-name.py - idempotently wire agent-name.sh into ~/.claude/settings.json as both a status line and a SessionStart hook.
  • .agents/skills/ - SKILL.md docs for the configs that live here. tooling-zsh, tooling-gpg-ssm. agentic-os-kai's setup.sh walks this dir as a peer skill source, symlinking each entry into ~/.claude/skills/. Co-located with the configs they describe so they don't drift.

Install

./setup.sh                # zsh + gpg-ssm symlinks
coily exec warp apply     # warp config (see warp/README.md)

setup.sh is idempotent. Detects host via uname -s and symlinks:

  • ~/.zshrc from zsh/zshrc (all hosts)
  • ~/.local/bin/gpg-ssm from scripts/gpg-ssm (Mac, Linux) or scripts/gpg-ssm.cmd (Windows)

It also runs install-agent-name.py to wire the agent self-name into ~/.claude/settings.json (status line plus SessionStart hook). A status line you set yourself is left untouched.

Pre-existing real files are backed up to <path>.bak on first run; later runs replace the symlinks in place.

Per-host notes

  • Linux (kai-server) - Login-shell switch is on the operator: chsh -s "$(command -v zsh)".
  • Windows (Git Bash) - Install zsh via MSYS first: pacman -S zsh. Symlinks need either an elevated Git Bash or Settings → Privacy and Security → For developers → Developer Mode toggled on.

After the gpg-ssm symlink lands, wire it into git:

git config --global gpg.program "$HOME/.local/bin/gpg-ssm"   # Mac, Linux
git config --global gpg.program "$HOME/.local/bin/gpg-ssm.cmd"  # Windows

Secrets pattern

The legacy pattern wrote all SSM SecureStrings to ~/.cache/ssm-env.sh and sourced it from .zshenv. That cleartext-on-disk dump was deleted.

The current pattern:

ssm-load                          # pull every / parameter into the current shell env
ssm-get /eco/server-api-token     # fetch one value without storing it

No disk write at any point. Same call works on Mac, Linux, Windows. AWS profile defaults to default; override with ssm-load <profile> <region>.

If you want secrets at shell startup, append ssm-load to the end of zsh/config.zsh. Default behavior is opt-in per shell.

Credits

  • static/wallpaper.jpg - Sombra hacking skull, from the Overwatch Sombra ARG promotional materials, Blizzard Entertainment, circa 2016. All Overwatch art and iconography © Blizzard Entertainment. Used here for personal terminal decoration only.