dvarapala द्वारपाल

Architecture decisions

Why dvarapala is built the way it is: each significant decision as a short record (context, the decision, its consequences), in the ADR format. A decision is never edited away: a later one supersedes it. Sources: docs/adr.

ADR 0001 · Accepted

Record architecture decisions

Decisions about how dvarapala is built (its dependencies, its boundaries, the trade-offs it accepts) were made in conversations and commit messages, where nobody finds them later. …

ADR 0002 · Accepted

A consent gate, not a sandbox

AI agents need root for real work; copying sudo commands back and forth is slow and error-prone, and giving an agent passwordless sudo removes the human from the loop.

ADR 0003 · Accepted

Install root-owned in /usr/local

If the window or the runner were user-writable, the agent the window guards against could edit them.

ADR 0004 · Accepted

The window is not a child of the agent

A window started by the agent could be inspected (ptrace, /proc) or fed a different environment.

ADR 0005 · Accepted

Rename vayu-elevate to anumati, in its own repository

The tool is useful on any Linux desktop, not only Vayu, and Vayu's rule is that tools live in their own repositories.

ADR 0006 · Accepted

Themed like the desktop, but nothing can be made hard to read

The approval window used fixed colours on a near-opaque card, deliberately: it runs with a cleared environment and root-owned XDG directories so that no user GTK CSS (which any pro…

ADR 0007 · Accepted

Answering from the phone, through ekatva, by the same path as typing

Agents run long jobs while you're away from the laptop, and stop when they need root. [ekatva](https://github.com/Theyashsawarkar/ekatva) links your phone and laptop end to end; us…

ADR 0008 · Accepted

Commands that run as you, in the same window, marked apart from root

Agents get stuck on more than root. A sandboxed agent can't reach the network or write outside its project; an agent the user set to "ask first" waits on commands it can't run alon…

ADR 0009 · Accepted

The window closes on the answer; the agent does the waiting

The window stayed on screen until the approved commands finished, showing each one's state and output, and stayed open after a failure until it was closed. A slow command (a packag…

ADR 0010 · Accepted

Rename anumati to dvarapala

Vayu's tools take their names from Hindu mythology, history and culture, and a plain word ("permission") said less than the tool does: it stands at the door between an agent and ro…