evva

module
v1.11.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 11, 2026 License: MIT

README

EVVAgent (evva)

A ReAct coding agent in your terminal. Multi-provider LLM, parallel tool dispatch, async sub-agents, swappable UI.


What is EVVAgent?

evva_logo.png

evva runs a tool-using LLM agent in your terminal. It speaks Anthropic Claude, DeepSeek, GLM (Zhipu/z.ai), OpenAI, and Ollama through one llm.Client interface; dispatches multiple tool calls per turn in parallel; tracks tasks and sub-agents through an observable store; and renders into a bubbletea TUI or a plain-text CLI sink.

The architecture is small on purpose — adding a new LLM provider, panel, or UI implementation is roughly one package each.


Install

macOS, Linux, and Windows (10 1903+) are supported. go install and source builds require Go 1.25+; prebuilt binaries for every platform ship with each GitHub Release.

go install github.com/johnny1110/evva/cmd/evva@latest

The binary lands in $GOBIN (or $GOPATH/bin). Make sure it's on your PATH.

Build from source
git clone https://github.com/johnny1110/evva
cd evva
make install

Override the location if you want it elsewhere:

sudo make install PREFIX=/usr/local/bin     # system-wide
make install PREFIX=$HOME/.local/bin        # user-local
Windows

Download evva-windows-amd64.zip (or -arm64) from the latest release, unzip evva.exe somewhere on your PATH, and run it from Windows Terminal — or use go install as above (the binary lands in %USERPROFILE%\go\bin).

Prerequisites:

  • Git for Windows — the agent's bash tool runs through its bundled Git Bash. Without it evva still starts, but shell-backed tools (bash, monitor, hooks) are unavailable and a startup warning says so. Set EVVA_SHELL to any other bash.exe to override autodetection.
  • Windows Terminal recommended for the TUI (legacy conhost works on Windows 10 1903+, but rendering is only validated on Windows Terminal).

If SmartScreen flags the downloaded exe, unblock it via file Properties → Unblock — the binaries are unsigned for now. Full details, including what evva service does and doesn't do on Windows: docs/user-guide/en/windows.md.

Verify
evva -version

Uninstall removes only the binary; your ~/.evva/ config is preserved:

make uninstall

Update

To update evva to the latest version without Go:

evva update                  # newest stable release (GitHub "Latest")
evva update latest           # same as above
evva update v1.4.3           # pin to an exact stable version
evva update v1.4.3-beta.1    # opt into a specific beta (pre-release)

With no argument (or latest) this resolves GitHub's Latest release — the newest stable build on main. Passing a tag pins to that exact build, including a -beta.N pre-release or an older version to downgrade. In every case it downloads the pre-built binary for your OS/arch and replaces the current one atomically. No Go toolchain required.

You can also check for updates from inside the TUI with /update.

To see your current version:

evva -version

First run

Just type evva from any directory. On the first launch evva auto-creates:

~/.evva/
├── config/
│   └── evva-config.yml      # user-tunable settings (auto-created with defaults)
└── skills/                  # optional skill scripts (your own)

A one-line stderr notice fires the first time only:

evva: wrote new config to ~/.evva/config/evva-config.yml — fill in your API keys to use cloud providers.

~/.evva/.env is optional. If you want to override deployment knobs (LOG_LEVEL, LOG_DIR, APP_ENV, LOG_FORMAT, SKILLS_DIR, USER_PROFILE), create it; otherwise the built-in defaults apply.

Adding an API key

Two ways:

  1. From inside the TUI: type /config, navigate to <provider>.api_key, press Enter, paste your key, press Enter again. Saved immediately.
  2. By hand: open ~/.evva/config/evva-config.yml and fill in providers.<provider>.api_key.

Cloud providers (Anthropic, DeepSeek, GLM, OpenAI) need a key; Ollama is local and key-less.


TUI reference

tui.png


User Guide

Full usage documentation covering the TUI interface, slash commands, keybindings, yank mode, the permission system, sub-agents, and all configuration options:

Swarm & service (multi-agent workstation)

Run a team of collaborating agents with evva service + evva swarm. A 0→hero walkthrough — concepts, building a swarm from scratch, the web workstation, day-2 ops, restart-resume, the full evva swarm / evva service CLI reference, and the external-event webhook:

For a field reference — every manifest field, tool, and coordination pattern — see the agent guide.

Or just try a ready-to-run example: the minimal 3-agent starter swarm (evva swarm ., watch a small team build a site) or the 7-member tech-team swarm. More live under examples/evva-swarm/.

Running it 24/7? evva service install-unit wires the host into launchd / systemd so it survives crashes and reboots — setup runbook (EN) · 正體中文.

The full evva swarm / evva service command table, the install-unit autostart runbook, and the external-event webhook (an outside app drives a swarm's leader by POSTing to /api/swarm/<ref>/event) all live in the swarm guide — see §8 Day-2 operations, §10 Security, and §11 Reference.

Integrate evva in your Go project

Embed evva's agent runtime as a library — custom LLM provider, tools, and event sink, using only pkg/* imports:

LSP integration

Semantic code intelligence — definitions, references, hover, symbols — via the lsp_request tool:


Configuration

~/.evva/config/evva-config.yml

User-tunable settings. Created automatically on first launch. Edit live via /config in the TUI, or by hand:

# Agent loop
max_iterations: 30
max_tokens: 4096
auto_compact_threshold: 0.8
display_thinking: true

# Default model used at startup (overwritten by /model swap)
default_provider: deepseek
default_model: deepseek-v4-pro

# Permission stance at startup. Cycle at runtime with Shift+Tab; -permission-mode CLI flag overrides.
permission_mode: default     # default | accept_edits | plan | bypass

# Web tooling
fetch_max_bytes: 100000
tavily_api_key: ""

# Per-provider credentials. Empty api_url falls back to the constant's default.
# glm = Zhipu AI / z.ai over its Anthropic-compatible endpoint (models glm-4.6, glm-5.2).
providers:
  anthropic: { api_key: "", api_url: "" }
  deepseek:  { api_key: "", api_url: "" }
  openai:    { api_key: "", api_url: "" }
  glm:       { api_key: "", api_url: "" }
  ollama:    { api_url: "" }
.env (optional)

Place in your working directory or at ~/.evva/.env. Only used for deployment / logging knobs — never user preferences:

APP_ENV=dev            # dev | prod
LOG_LEVEL=info         # debug | info | warn | error
LOG_FORMAT=text        # text | json
LOG_DIR=               # unset → $EVVA_HOME/logs (default); path → custom dir; explicit empty → stdout-only
SKILLS_DIR=skills      # subpath under ~/.evva/
USER_PROFILE=user_profile.md
CLI flags
evva                                # interactive TUI (when stdout is a TTY)
evva -version                       # print version, commit, and build date
evva update                         # self-update to newest stable (no Go required)
evva update v1.4.3-beta.1           # self-update to a specific tag (stable or beta)
evva -temp 0.7                      # sampling temperature (default unset)
evva -max-tokens 2048               # per-completion output cap (overrides YAML)
evva -max-iters 40                  # loop iteration cap (overrides YAML)
evva -permission-mode=plan          # boot in plan mode (read-only; see "Permission modes")
evva -permission-mode=bypass        # boot with the gate disabled
evva -no-tui "explain loop.go"      # one-shot plain-text mode
echo "list files in /tmp" | evva -no-tui   # piped prompt

Project structure

evva/
├── cmd/evva/        # CLI entry point — TUI + `service` / `swarm` / `update` subcommands
├── pkg/             # stable public SDK (embed evva as a library)
│   ├── agent/       #   agent constructor + controller interface
│   ├── llm/         #   provider abstraction + claude/ deepseek/ openai/ ollama/ builtins/
│   ├── tools/       #   Tool interface + fs/ shell/ web/ lsp/ repl/ cron/ … families
│   ├── toolset/     #   tool registry + catalog
│   ├── ui/          #   UI plugin contract + bubbletea/ + lp/ reference impls
│   ├── observable/  #   pub/sub mixin for backing stores
│   ├── event/ config/ constant/ permission/ skill/ hooks/ mcp/ update/ version/ …
├── internal/        # runtime-specific impls (not part of the public API)
│   ├── agent/       #   agent struct, main loop, spawn, profiles, sysprompt/, loader/
│   ├── swarm/       #   Veronica multi-agent swarm subsystem (:8888 host)
│   ├── tools/       #   evva-specific tool families (meta/ mode/ ux/ config/ dev/)
│   ├── ui/          #   Bubble Tea v2 TUI implementation
│   ├── session/ toolset/ permission/ question/ memdir/ hooks/ skills/ logger/
├── web2/            # Vue 3 + TypeScript swarm web workstation (FE v2)
├── examples/        # embedding hosts + ready-to-run example swarms
├── docs/            # documentation (see docs/README.md for the map)
├── scripts/         # dev / release scripts
└── ref/             # reference TypeScript source ported from

The full package-by-package breakdown lives in docs/architecture.md (vision + architecture). Key boundaries:

  • agent knows about event.Sink, never about a concrete UI.
  • pkg/tools/* and internal/tools/* produce tools.Result (text + opaque Metadata); the UI type-asserts on Metadata to render structured payloads.
  • pkg/observable has no dependencies on agent or UI.
  • pkg/ui defines two narrow interfaces; implementations live under internal/ui/ and pkg/ui/.

Roadmap

Much of the original roadmap has shipped: multimodal read (images, PDFs, notebooks), the Veronica multi-agent swarm with a Vue web workstation (:8888), Windows support, MCP client, typed memory, LSP intelligence, and session persistence. The living roadmap — waves, PRDs, and design docs — lives under docs/roadmap/.

Known limitations
  • Sub-agent hierarchy is exactly two layers (no nested spawning).
  • Token counts depend on provider reporting — Ollama only reports prompt / eval, not cache or reasoning splits.
  • The swarm web workstation binds loopback only and its event webhook is unauthenticated (local integrations only, current phase).

Contributing

Bug reports, features, and PRs are welcome — start with CONTRIBUTING.md for dev setup, the branch/PR flow, and where things live. Architecture and vision: docs/architecture.md.

License

See LICENSE.

Directories

Path Synopsis
cmd
evva command
examples
minimal-host command
Minimal-host is a small program showing how to embed evva's agent runtime in a downstream Go app:
Minimal-host is a small program showing how to embed evva's agent runtime in a downstream Go app:
internal
agent
Package profiles supplies preset agent.Profile constructors.
Package profiles supplies preset agent.Profile constructors.
agent/attachments
Package attachments computes per-turn <system-reminder>-wrapped messages the agent loop prepends to the user's incoming prompts.
Package attachments computes per-turn <system-reminder>-wrapped messages the agent loop prepends to the user's incoming prompts.
agent/loader
Package loader reads user-authored agent definitions from <EVVA_HOME>/agents/{name}/ at startup and turns them into sysprompt.AgentDefinition values the agent.Registry can merge with Go-defined built-ins (sysprompt.MainAgent, ExploreAgent, GeneralAgent).
Package loader reads user-authored agent definitions from <EVVA_HOME>/agents/{name}/ at startup and turns them into sysprompt.AgentDefinition values the agent.Registry can merge with Go-defined built-ins (sysprompt.MainAgent, ExploreAgent, GeneralAgent).
agent/sysprompt
Package sysprompt builds the system prompt for each kind of agent evva runs.
Package sysprompt builds the system prompt for each kind of agent evva runs.
checkpoint
Package checkpoint implements evva's per-turn "checkpoint & rewind" store: before each user turn the runtime records a checkpoint, and the first time a turn's fs tools (edit/write) mutate a file, that file's pre-mutation bytes are captured.
Package checkpoint implements evva's per-turn "checkpoint & rewind" store: before each user turn the runtime records a checkpoint, and the first time a turn's fs tools (edit/write) mutate a file, that file's pre-mutation bytes are captured.
memdir
Package memdir loads the on-disk memory that seeds the agent's system prompt at session start, and provides the read primitives for evva's typed-memory directory:
Package memdir loads the on-disk memory that seeds the agent's system prompt at session start, and provides the read primitives for evva's typed-memory directory:
memdir/dream
Package dream is the background memory-consolidation ("dream") subsystem: a gated, fenced pass that merges, prunes, and re-indexes the global memory store.
Package dream is the background memory-consolidation ("dream") subsystem: a gated, fenced pass that merges, prunes, and re-indexes the global memory store.
memdir/recall
Package recall finds the memory files relevant to a user query via a cheap LLM side-query, so only the few memories that matter get pulled into a turn (the rest stay on disk, surfaced on demand).
Package recall finds the memory files relevant to a user query via a cheap LLM side-query, so only the few memories that matter get pulled into a turn (the rest stay on disk, surfaced on demand).
outputstyle
Package outputstyle implements output styles: thin, stackable prompt overlays that change how the active persona *talks* without redefining who it is.
Package outputstyle implements output styles: thin, stackable prompt overlays that change how the active persona *talks* without redefining who it is.
question
Package question provides the back-channel between the AskUserQuestion tool (blocked agent goroutine) and the TUI (user interaction).
Package question provides the back-channel between the AskUserQuestion tool (blocked agent goroutine) and the TUI (user interaction).
repomap
Package repomap composes a compact, ranked, token-bounded overview of a codebase's symbols from the LSP layer (pkg/tools/lsp), with a glob fallback when no language server is available.
Package repomap composes a compact, ranked, token-bounded overview of a codebase's symbols from the LSP layer (pkg/tools/lsp), with a glob fallback when no language server is available.
session
Session storage on disk.
Session storage on disk.
skills/bundled
Package bundled registers evva's first-party Markdown skills into a skill.Registry.
Package bundled registers evva's first-party Markdown skills into a skill.Registry.
swarm
Package swarm is the per-space coordination core of Veronica, evva's in-process multi-agent swarm subsystem.
Package swarm is the per-space coordination core of Veronica, evva's in-process multi-agent swarm subsystem.
swarm/agentdef
Package agentdef is the re-callable loader that turns one on-disk agent directory (agents/{main,sub}/{name}/: system_prompt.md, tools/active.yml, tools/deferr.yml, profile.yml, skills/*) into the public SDK objects needed to construct a live agent — a pkg/agent.AgentDefinition plus a *pkg/skill.Registry — using pkg/* only.
Package agentdef is the re-callable loader that turns one on-disk agent directory (agents/{main,sub}/{name}/: system_prompt.md, tools/active.yml, tools/deferr.yml, profile.yml, skills/*) into the public SDK objects needed to construct a live agent — a pkg/agent.AgentDefinition plus a *pkg/skill.Registry — using pkg/* only.
swarm/bus
Package bus is the per-space message bus and mailboxes.
Package bus is the per-space message bus and mailboxes.
swarm/doctor
Package doctor is the swarm preflight (DR): `evva swarm doctor` runs the whole register-and-run ladder — manifest → member definitions → models / efforts → provider keys → .vero state → (optionally) the live service — and reports ✓/⚠/✗ per probe, so the expensive mistakes that today explode deep inside a member's first run (a typo'd model pin, a missing API key, a ledger written by a newer binary) surface before anything registers.
Package doctor is the swarm preflight (DR): `evva swarm doctor` runs the whole register-and-run ladder — manifest → member definitions → models / efforts → provider keys → .vero state → (optionally) the live service — and reports ✓/⚠/✗ per probe, so the expensive mistakes that today explode deep inside a member's first run (a typo'd model pin, a missing API key, a ledger written by a newer binary) surface before anything registers.
swarm/service
Package service is the process-singleton swarm host: the 127.0.0.1:8888 HTTP/WS server that fronts one or more isolated SwarmSpaces.
Package service is the process-singleton swarm host: the 127.0.0.1:8888 HTTP/WS server that fronts one or more isolated SwarmSpaces.
swarm/store
Package store is the single per-space data layer: it opens <workdir>/.vero/vero.db (WAL + busy_timeout, foreign keys on), runs migrations, and exposes a sync.RWMutex-wrapped DAO for the task ledger and the message store.
Package store is the single per-space data layer: it opens <workdir>/.vero/vero.db (WAL + busy_timeout, foreign keys on), runs migrations, and exposes a sync.RWMutex-wrapped DAO for the task ledger and the message store.
swarm/tools
Package tools holds Veronica's swarm-specific custom tools, written against pkg/tools.Tool and attached to agents via pkg/agent.WithCustomTool:
Package tools holds Veronica's swarm-specific custom tools, written against pkg/tools.Tool and attached to agents via pkg/agent.WithCustomTool:
swarm/tui/app
Package app is the attach TUI (`evva swarm attach`): a Bubble Tea cockpit over one running space.
Package app is the attach TUI (`evva swarm attach`): a Bubble Tea cockpit over one running space.
swarm/tui/client
Package client is the attach TUI's service client: thin authenticated REST calls for state snapshots and one WebSocket for the live feed + the interactive gate replies — exactly the surface the web console consumes (process model A: the service builds the agents, this client only reads state and POSTs intent).
Package client is the attach TUI's service client: thin authenticated REST calls for state snapshots and one WebSocket for the live feed + the interactive gate replies — exactly the surface the web console consumes (process model A: the service builds the agents, this client only reads state and POSTs intent).
swarm/tui/reduce
Package reduce is the Go port of the web console's event reducers (web2/src/lib/events.ts) — the semantics that turn the swarm's wire events into renderable state.
Package reduce is the Go port of the web console's event reducers (web2/src/lib/events.ts) — the semantics that turn the swarm's wire events into renderable state.
swarm/tui/wire
Package wire holds the attach TUI's wire-protocol types: the JSON shapes the swarm service pushes over its WebSocket and /chatlog replay, and the inbound command envelope the socket accepts.
Package wire holds the attach TUI's wire-protocol types: the JSON shapes the swarm service pushes over its WebSocket and /chatlog replay, and the inbound command envelope the socket accepts.
swarm/webapi
Package webapi serves the swarm workstation API: REST snapshots (/api/swarms, /api/swarm/:id, /api/tasks, /api/agents/:name/transcript, /api/messages) and a WebSocket bridge that streams each agent's pkg/event.Event out to the browser, fanned out by (spaceID, AgentID).
Package webapi serves the swarm workstation API: REST snapshots (/api/swarms, /api/swarm/:id, /api/tasks, /api/agents/:name/transcript, /api/messages) and a WebSocket bridge that streams each agent's pkg/event.Event out to the browser, fanned out by (spaceID, AgentID).
tools/config
Package configtool implements the `config` tool: a single model-facing handle on evva's runtime settings, mirroring what the interactive /config overlay exposes to the user.
Package configtool implements the `config` tool: a single model-facing handle on evva's runtime settings, mirroring what the interactive /config overlay exposes to the user.
tools/meta
Package meta hosts agent-meta tools: Agent (spawn sub-agent), ToolSearch (load deferred-tool schemas), and ScheduleWakeup (self-pace /loop iterations).
Package meta hosts agent-meta tools: Agent (spawn sub-agent), ToolSearch (load deferred-tool schemas), and ScheduleWakeup (self-pace /loop iterations).
tools/mode
Package mode hosts agent-mode and isolation tools: EnterPlanMode / ExitPlanMode (read-only planning) and EnterWorktree / ExitWorktree (filesystem-isolated worktrees).
Package mode hosts agent-mode and isolation tools: EnterPlanMode / ExitPlanMode (read-only planning) and EnterWorktree / ExitWorktree (filesystem-isolated worktrees).
tools/ux
Package ux hosts user-interaction tools: AskUserQuestion, PushNotification.
Package ux hosts user-interaction tools: AskUserQuestion, PushNotification.
toolset
Package toolset is the catalog of every tool the agent can construct.
Package toolset is the catalog of every tool the agent can construct.
pkg
banner
Package banner exposes the evva splash banner.
Package banner exposes the evva splash banner.
common/proc
Package proc is the single per-OS seam for spawning and managing child processes.
Package proc is the single per-OS seam for spawning and managing child processes.
config
Package config carries the runtime configuration the evva agent and its bundled tools read at startup and during a session.
Package config carries the runtime configuration the evva agent and its bundled tools read at startup and during a session.
event
Package event defines the event stream the agent emits while running.
Package event defines the event stream the agent emits while running.
hooks
Package hooks implements evva's lifecycle extension system.
Package hooks implements evva's lifecycle extension system.
llm
llm/builtins
Package builtins registers evva's bundled LLM providers (Anthropic, DeepSeek, GLM, OpenAI, Ollama, Qwen) into pkg/llm.DefaultRegistry().
Package builtins registers evva's bundled LLM providers (Anthropic, DeepSeek, GLM, OpenAI, Ollama, Qwen) into pkg/llm.DefaultRegistry().
llm/glm
Package glm implements llm.Client for Zhipu AI / z.ai GLM models.
Package glm implements llm.Client for Zhipu AI / z.ai GLM models.
llm/qwen
Package qwen implements llm.Client for Alibaba Cloud's Tongyi/Qwen models reached over the DashScope OpenAI-compatible endpoint.
Package qwen implements llm.Client for Alibaba Cloud's Tongyi/Qwen models reached over the DashScope OpenAI-compatible endpoint.
mcp
Package mcp implements evva's Model Context Protocol client.
Package mcp implements evva's Model Context Protocol client.
observable
Package observable is the framework primitive that lets backing stores (task list, subagent panel, future "notes" / "todos" / ...) publish state changes through a single uniform stream.
Package observable is the framework primitive that lets backing stores (task list, subagent panel, future "notes" / "todos" / ...) publish state changes through a single uniform stream.
permission
Package permission implements evva's tool-permission system.
Package permission implements evva's tool-permission system.
skill
Package skill implements user-installed Markdown skills and the SKILL tool that invokes them.
Package skill implements user-installed Markdown skills and the SKILL tool that invokes them.
tools/alarm
Package alarm provides a one-shot, absolute-time wake scheduler and the alarm_create / alarm_list / alarm_cancel tools built on it.
Package alarm provides a one-shot, absolute-time wake scheduler and the alarm_create / alarm_list / alarm_cancel tools built on it.
tools/cron
Package cron hosts the recurring-schedule prompt tools: cron_create, cron_list, cron_delete.
Package cron hosts the recurring-schedule prompt tools: cron_create, cron_list, cron_delete.
tools/daemon
Package daemon is the unified abstraction over every long-running background unit the agent can spawn — bash run_in_background tasks, async subagents, monitor streams, and future kinds (remote_agent, in_process_teammate, local_workflow, dream).
Package daemon is the unified abstraction over every long-running background unit the agent can spawn — bash run_in_background tasks, async subagents, monitor streams, and future kinds (remote_agent, in_process_teammate, local_workflow, dream).
tools/excel
Package excel provides Excel (.xlsx) file manipulation via the excelize library.
Package excel provides Excel (.xlsx) file manipulation via the excelize library.
tools/fs
Package fs exposes filesystem tools (Read, Write, Edit) as stateless singletons.
Package fs exposes filesystem tools (Read, Write, Edit) as stateless singletons.
tools/kits
Package kits exposes pre-composed tool-name lists a downstream consumer can hand to agent.NewProfile without re-typing the canonical evva tool selections from scratch.
Package kits exposes pre-composed tool-name lists a downstream consumer can hand to agent.NewProfile without re-typing the canonical evva tool selections from scratch.
tools/lsp
Package lsp provides Language Server Protocol integration for evva.
Package lsp provides Language Server Protocol integration for evva.
tools/lsp/protocol
Package protocol holds hand-written LSP protocol types covering the subset of the LSP 3.17 spec needed by evva's Phase 1 operations (definition, references, hover, document symbols) plus the lifecycle handshake.
Package protocol holds hand-written LSP protocol types covering the subset of the LSP 3.17 spec needed by evva's Phase 1 operations (definition, references, hover, document symbols) plus the lifecycle handshake.
tools/monitor
Package monitor hosts the deferred Monitor tool — a background process watcher that streams stdout lines as agent-loop notifications.
Package monitor hosts the deferred Monitor tool — a background process watcher that streams stdout lines as agent-loop notifications.
tools/notebook
Package notebook hosts the NotebookEdit tool.
Package notebook hosts the NotebookEdit tool.
tools/repl
Package repl hosts the repl tool: a scratch REPL that runs a Python or JavaScript snippet in a fresh subprocess and returns its output.
Package repl hosts the repl tool: a scratch REPL that runs a Python or JavaScript snippet in a fresh subprocess and returns its output.
tools/shell
Package shell hosts shell-side tools: Bash, Ls, Grep, Tree.
Package shell hosts shell-side tools: Bash, Ls, Grep, Tree.
tools/structured
Package structured implements the structured_output tool: a per-run tool whose input schema IS a caller-supplied JSON schema, letting a headless host receive the agent's final answer as validated JSON instead of prose.
Package structured implements the structured_output tool: a per-run tool whose input schema IS a caller-supplied JSON schema, letting a headless host receive the agent's final answer as validated JSON instead of prose.
tools/todo
Package todo exposes the single todo_write tool.
Package todo exposes the single todo_write tool.
tools/util
Package util hosts miscellaneous stateless utility tools.
Package util hosts miscellaneous stateless utility tools.
tools/web
Package web hosts web tools: web_search (Tavily-backed) and web_fetch (HTTP GET + readable-text extraction).
Package web hosts web tools: web_search (Tavily-backed) and web_fetch (HTTP GET + readable-text extraction).
tools/workflow
Package workflow owns the solo dynamic-workflow task board: a dependency graph of tasks the root agent plans at runtime and an append-only session log that makes the board restart-safe.
Package workflow owns the solo dynamic-workflow task board: a dependency graph of tasks the root agent plans at runtime and an append-only session log that makes the board restart-safe.
ui
Package ui defines the contract between evva's core agent and any UI implementation that drives it.
Package ui defines the contract between evva's core agent and any UI implementation that drives it.
ui/bubbletea
Package bubbletea is evva's reference terminal UI: it satisfies the public ui.UI contract (pkg/ui) and drives any agent through ui.Controller, so it depends only on pkg/* — a downstream host embeds it exactly the way cmd/evva does.
Package bubbletea is evva's reference terminal UI: it satisfies the public ui.UI contract (pkg/ui) and drives any agent through ui.Controller, so it depends only on pkg/* — a downstream host embeds it exactly the way cmd/evva does.
ui/bubbletea/app
Package app is the v2 TUI's top-level tea.Model.
Package app is the v2 TUI's top-level tea.Model.
ui/bubbletea/components/agents
Package agents renders the horizontal subagent chip strip that sits just above the input.
Package agents renders the horizontal subagent chip strip that sits just above the input.
ui/bubbletea/components/bgtasks
Package bgtasks renders the horizontal background-task chip strip.
Package bgtasks renders the horizontal background-task chip strip.
ui/bubbletea/components/diff
Package diff renders a *fs.FileDiff (the structured metadata write_file / edit_file attach to tools.Result) as a multi-line git-style string with a gutter / content split.
Package diff renders a *fs.FileDiff (the structured metadata write_file / edit_file attach to tools.Result) as a multi-line git-style string with a gutter / content split.
ui/bubbletea/components/input
Package input owns the v2 TUI's bottom textarea: prompt composition, paste compaction, and history navigation.
Package input owns the v2 TUI's bottom textarea: prompt composition, paste compaction, and history navigation.
ui/bubbletea/components/monitors
Package monitors renders the horizontal monitor-task chip strip.
Package monitors renders the horizontal monitor-task chip strip.
ui/bubbletea/components/overlays
Package overlays implements the modal panels the App pushes onto its focus stack: /config (form), /model (picker), /compact (chooser).
Package overlays implements the modal panels the App pushes onto its focus stack: /config (form), /model (picker), /compact (chooser).
ui/bubbletea/components/slash
Package slash renders the autocomplete suggestion panel that pops up when the user types "/" at the start of the input.
Package slash renders the autocomplete suggestion panel that pops up when the user types "/" at the start of the input.
ui/bubbletea/components/status
Package status owns the v2 TUI's bottom HUD: the run-state pill, model + token cells, context-utilization meter, and the contextual hint line that sits above it.
Package status owns the v2 TUI's bottom HUD: the run-state pill, model + token cells, context-utilization meter, and the contextual hint line that sits above it.
ui/bubbletea/components/todos
Package todos renders the bottom todo panel and the green "TODOS COMPLETE" snapshot folded into the transcript when every todo in the store finishes.
Package todos renders the bottom todo panel and the green "TODOS COMPLETE" snapshot folded into the transcript when every todo in the store finishes.
ui/bubbletea/components/transcript
Package transcript owns the scrollback model of the v2 TUI.
Package transcript owns the scrollback model of the v2 TUI.
ui/bubbletea/components/workflow
Package workflow renders the dynamic-workflow board panel — the solo counterpart of the swarm web board: one row per task with lifecycle glyph, dependency badges, verify-policy chip, and a live spinner for tasks whose worker daemon is currently running.
Package workflow renders the dynamic-workflow board panel — the solo counterpart of the swarm web board: one row per task with lifecycle glyph, dependency badges, verify-policy chip, and a live spinner for tasks whose worker daemon is currently running.
ui/bubbletea/events
Package events declares the tea.Msg types the v2 TUI passes through its Update loop.
Package events declares the tea.Msg types the v2 TUI passes through its Update loop.
ui/bubbletea/mouse
Package mouse owns mouse-capture wiring + clipboard integration.
Package mouse owns mouse-capture wiring + clipboard integration.
ui/bubbletea/theme
Package theme owns every styled surface in the v2 TUI.
Package theme owns every styled surface in the v2 TUI.
ui/lp
Package lp is evva's "low profile" terminal UI: a quiet, professional black + gold alternative to the bundled NEON TOKYO TUI.
Package lp is evva's "low profile" terminal UI: a quiet, professional black + gold alternative to the bundled NEON TOKYO TUI.
ui/lp/app
Package app is lp's top-level tea.Model — the low-profile root.
Package app is lp's top-level tea.Model — the low-profile root.
update
Package update implements self-update for evva.
Package update implements self-update for evva.
version
Package version exposes the evva SDK's release identity.
Package version exposes the evva SDK's release identity.
Package web2 embeds the built FE v2 SPA (web2/dist) so `evva service` can serve the swarm workstation UI from a single binary.
Package web2 embeds the built FE v2 SPA (web2/dist) so `evva service` can serve the swarm workstation UI from a single binary.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL