Get carlos on your machine.
carlos ships as a single static binary. No CGO, no system libraries, around 30 MB. Pre-built tarballs cover macOS and Linux on amd64 and arm64; Homebrew is the shortest path.
Homebrew recommended
One tap, one formula. The release workflow bumps the formula on every v* tag, so brew upgrade tracks the latest stable release.
brew install georgebuilds/tap/carlos carlos
The formula lives in georgebuilds/homebrew-tap. On first launch you drop into the eight-screen onboarding flow; pick a name, configure at least one provider, and you are talking to carlos in under a minute.
Pre-built tarball
Grab a tarball from the Releases page. Four arch/os combos are published on every tag.
| target | asset | note |
|---|---|---|
| darwin amd64 | carlos_darwin_amd64.tar.gz |
Intel Mac |
| darwin arm64 | carlos_darwin_arm64.tar.gz |
Apple Silicon |
| linux amd64 | carlos_linux_amd64.tar.gz |
most servers, most laptops |
| linux arm64 | carlos_linux_arm64.tar.gz |
Raspberry Pi 4/5, Graviton, Ampere |
Extract and drop the carlos binary onto your $PATH:
tar -xzf carlos_darwin_arm64.tar.gz mv carlos /usr/local/bin/ carlos version
SHA-256 checksums are published alongside the tarballs. Builds use CGO_ENABLED=0, -trimpath, and a fixed commit mod_timestamp, so artifacts are bit-identical given the same source.
From source
Requires a Go toolchain pinned by go.mod, currently 1.26.3. No CGO, no native dependencies.
git clone https://github.com/georgebuilds/carlos cd carlos go build ./cmd/carlos ./carlos
Cross-compile sanity check for the supported targets:
GOOS=linux GOARCH=arm64 go build ./cmd/carlos GOOS=darwin GOARCH=amd64 go build ./cmd/carlos
Verify
carlos version prints version, build date, and commit. carlos help lists the CLI verbs. If both work, you are installed.
carlos version # carlos v0.7.2 built 2026-06-08T14:22:01Z commit 5ffed72 carlos help
What lands on disk
On first run carlos writes a minimal home directory at ~/.carlos/. Everything is local, plain-text where possible, and easy to inspect.
- 1. ~/.carlos/config.yaml mode 0600, your settings
- 2. ~/.carlos/state.db SQLite event log + memory FTS5
- 3. ~/.carlos/frames/ flat files per frame
- 4. ~/.carlos/schedules/ cron grammar + envelopes
- 5. ~/.carlos/trust/ approval policy store
- 6. ~/.carlos/shell_history shell-prefix history
The full layout, including per-frame subdirectories and the daemon socket, is documented in the config reference.
Update path
Homebrew installs upgrade with brew upgrade. The bordered farewell panel surfaces a "brew update available" notice on TUI exit when a newer release is detected, so you do not need to poll manually.
| install method | update command |
|---|---|
| Homebrew | brew update && brew upgrade carlos |
| tarball | download the new tarball, swap the binary on $PATH |
| source | git pull && go build ./cmd/carlos |
Installed and verified? Head to the quickstart for the eight-screen onboarding tour, the chat TUI keys worth knowing, and the headless carlos please verb.