small gleam coding and (not yet) persistent agent daemon with a detachable cli
Gleam 43%
Go 27%
Python 19%
Erlang 10%
Rust 1%
Nix <1%
Shell <1%

README.md

albedo #

small gleam coding and (not yet) persistent agent daemon with a detachable cli

  • python repl and bash.
  • native go cli using charm (bubbletea, lipgloss, bubbles)
# build native go cli
go -C cli build -o bin/albedo ./cmd/albedo
./cli/bin/albedo

# or to install it globally
go -C cli install ./cmd/albedo
albedo

when installed globally outside the checkout, set ALBEDO_ROOT to the absolute repo path if the daemon needs to be started:

ALBEDO_ROOT=/path/to/albedo albedo

ALBEDO_ROOT is only needed when the installed binary needs to launch the daemon from outside the repo tree; the local binary (./cli/bin/albedo) discovers the repo root automatically from its file path. you can also embed the root at build/install time if preferred:

go -C cli install -ldflags "-X main.buildRoot=$(pwd)" ./cmd/albedo

nix package (includes the compiled daemon and python runtime):

nix build .#albedo
nix run . -- --help
# package checks, with a local mock provider (no model credentials):
python3 test/manual/nix_package_smoke.py "$PWD/result/bin/albedo"
ALBEDO_NO_BROWSER=1 ALBEDO_TEST_BINARY="$PWD/result/bin/albedo" python3 test/daemon/integration.py

default.nix is also available through pkgs.callPackage ./default.nix { }. no checkout or gleam compiler is needed at runtime. ALBEDO_DAEMON can override the packaged daemon with an absolute executable path. when the running daemon is from another build, the packaged cli asks in a terminal whether to restart it, and elsewhere keeps it and prints a warning.

optional: view, which lets the model see its changes and code as highlighted images for a final review pass. needs cargo.

native/render/install.sh   # then enable `view` in /extensions

tests

./test.sh               # gleam, native go cli, and daemon suites
go -C cli test ./...    # native go cli tests
go -C cli vet ./...     # native go cli vet
gleam test              # gleam suite plus the python harnesses that hold no build lock

manual performance tools:

test/manual is opt-in: those benchmarks need a provider, a PTY, or artifacts from an earlier run.

# standalone PTY smoke verification of the cli
ALBEDO_NO_BROWSER=1 python3 test/manual/go_port_smoke.py

# 120Hz scrollback performance and timing evaluation
ALBEDO_NO_BROWSER=1 python3 test/manual/go_scroll_perf.py

# native heap and runtime memory attribution profile
ALBEDO_NO_BROWSER=1 python3 test/manual/go_memory_profile.py

todo

  • [] flesh out plugin system more
  • [] sdk and -p, command to print out most recent assistant message from session
  • [] compaction strategy plugins LCM and snapcompact
  • [] compaction evaluations: old-fact recall, corrected instructions, tool pairing, images, restarts, and token/cost comparisons
  • [] subagents plugin
  • [] social plugins like discord
  • [ish skills are done] plugins like heartbeat and skills
  • [] oauth that we shamelessly rip from omp
  • [] ai powered approve for me (jev/llm)
  • [] improve verbose mode on tui
  • [] webui
  • [] connect to other albedos on tui/webui and manage sessions
  • [] ability to offload tools like python/bash onto other machines/containers