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