| title | Development | ||
|---|---|---|---|
| description | Build targets, dev loop, and requirements for contributing to lazyagent. | ||
| sidebar |
|
- Go 1.25+ — the module targets a recent Go toolchain.
- Node.js 18+ — required only for the macOS menu bar app frontend (Svelte 5 + Tailwind 4). The TUI and API build without it.
- macOS — required for the menu bar app. The TUI and HTTP API are cross-platform.
# Install frontend deps (first time only)
make install
# Full build: TUI + macOS menu bar + API
make build
# TUI only — no Wails, no Node.js required
make tui
# Quick dev cycle (rebuild + relaunch tray)
make dev
# Clean all artifacts
make cleanAll binaries land in the repository root.
For TUI and API work:
make tui && ./lazyagent --tui --apiFor tray/frontend work:
make devmake dev rebuilds the embedded frontend, re-runs the Go build, and relaunches the tray process.
go test ./...Every package with behavior under test (internal/amp, claude, codex, core, pi, api) has real fixture files that exercise the JSONL parsers end to end. Keep the fixtures realistic — synthetic JSONL has a way of missing the edge cases that break in production.
See Architecture for the full module map.
Pull requests and issues are welcome at github.com/illegalstudio/lazyagent. A few conventions:
- Commit messages follow the conventional-commits style (
feat:,fix:,refactor:,docs:,chore:). Scope to the relevant package when possible, e.g.feat(compact):,fix(amp):. - Adding a new agent means adding a provider under
internal/<agent>/that implements theSessionProviderinterface frominternal/core/provider.go. For the maintenance commands to cover it, also add a mutator underinternal/compact/<agent>.goand deletion hooks underinternal/prune/delete.go. - Keep the documentation in
docs/in the same PR as the behavior change — the site at lazyagent.dev/docs tracks this repository as upstream.