Skip to content

Projects and machines

The Projects tab (1) owns repository and worktree context: local Git branches, worktrees, dirty state, the sessions working in each, and file overlaps between agents.

Terminal window
driga projects # project status
driga projects --at-risk # only projects with risk flags
driga projects show <project> # status, worktrees and sessions

Repositories are discovered from session working directories. Add scanning roots only if you want more:

roots = ["~/code"]
root_depth = 3

Local Git commands never fetch.

The Machines tab (2) owns health and reclamation: h health, p process review, d disk candidates.

 driga   test-host · ● live · daemon · 05:00:00                   mem ███░░░ 50%
0 Flow   1 Projects   [2 Machines]
────────────────────────────────────────────────────────────────────────────────
  METRIC / APP / PROCESS  CPU/#  MEASURE / HOST / ATTRIBUTION      MEM
  agents 2.0G of 4.0G (50%) · 70.0% CPU · 1 processes · 3 MCP servers ·
  pressure critical · swap 1.0G/2.0G · disk 12.0G free
  Memory measure: physical_footprint · footprint includes compressed and
  swapped memory, so apps can add up to more than RAM
  Sessions by memory
› ▸ claude · fixture · s… 70.0%  physical_footprint                2.0G
  Started from Editor
  Agent processes without a session
  MCP servers and helper processes
  codegraph mcp  3 servers · 300.0M · observed growth ↑ 0.75/h since 02:20 · 1 …
  codegraph mcp pile-up   3      codex app-server PID 10 · 31h0m0s 300.0M
  ▸ Other apps · 1.0G (rss)
  Machine vitals
  memory                         4.0G/8.0G
  compressed                     1.0G
  swap                           1.0G/2.0G
  pressure level                 critical
  pressure free                  0.0%
  load (1/5/15)                  0.0 / 0.0 / 0.0
  cores                          4
  disk free                      12.0G
  Agent memory by role

h health · p reclaim processes · d reclaim disk · 0 Flow · M machine
enter detail · / filter · s sort · g group by project · o open terminal
esc back · ? help · q quit
Rendered from the TUI's synthetic test fixture.
Terminal window
driga machines show # local machine, compact, with 24h trends
driga machines show --full # all retained trends and process detail
driga machines # local and paired machine connection health

Every sampled process is placed exactly once:

  1. Session — proven to belong to a live agent session, by its parent chain or a unique project working directory.
  2. Agent without a session — the process or an ancestor matches an agent signature.
  3. Likely agent work — MCP servers below a non-agent app such as an editor, shown as shared with editor.
  4. Other apps — everything else, as one total.

The summary leads with proven agent memory against machine memory, then CPU, process and MCP server counts, pressure, swap and free disk, followed by sessions by cost, MCP server roll-ups and pile-ups with observed growth, and machine vitals. Likely memory is never folded into the proven amount. Machine session memory is labelled separately from Flow’s monetary cost.

An orphan is an agent helper process tree whose agent is gone. Driga shows the evidence and never acts without confirmation.

Terminal window
driga orphans # candidates and evidence
driga orphans kill <id> # previews the tree and asks
driga orphans kill <id> --force

Termination rechecks identity and descendants before acting, and young candidates (orphan_min_age, default 10m) are refused. --force escalates survivors after a second confirmation, unless --yes was given. Processes on a paired machine must be handled on that machine.

Process signatures can be extended with orphans.extra_signatures:

[orphans]
extra_signatures = ["~/extra-agent-signatures.toml"]
[[signature]]
name = "example-helper"
agent = "codex"
role = "helper"
match = ['^example-agent-helper([[:space:]]|$)']

Extra files are read before the built-in signatures and the first match wins. Roles are interactive, headless, host, helper and app.

  • Low disk: below machine.disk_free_min. The default "0" is automatic: the smaller of 10% of the volume or 20 GB. Set a byte value such as "5GiB" to override.
  • Memory pressure: after two consecutive critical OS samples. The text leads with the agents’ proven share of memory in use and names the largest MCP pile-up.

Each condition notifies once until it recovers; see Notifications.