Local-first agent gateway

Your agent, on the record.

One operator, one local boundary. The model proposes. The gateway decides. Every turn leaves a receipt.

  • RuntimeSingle Go binary
  • StateSQLite + FTS5
  • BoundaryLoopback only
The DreenMind symbol: a bold D crossed by a light blue diagonal.
DreenMindOne operator
Turn 01Recorded
Persisted
12:04:18
Tool
workspace.read
Approval
Not required
Result
Recorded as tool data

What it is

A gateway, not a chat wrapper.

DreenMind owns the turn, the state, and the authority boundary. The model can propose a tool call. It cannot grant itself permission, skip the record, or hide what happened.

Persist before execute.

The turn, the assistant message, and the tool-call row are written before a tool runs. A crash can leave an interrupted call; it cannot leave an unexplained action.

Scope the authority.

Tools, hosts, and approvals start closed. An approval is a narrow, single-use capability, not a chat button that grants a blank cheque.

Keep the receipt.

The database is the source of truth. The model context is a projection. Every policy decision and result stays local and inspectable.

The record

What happened is part of the product.

Every turn leaves a local receipt: the message, the tool call, the policy decision, the approval, and the result. Labels describe evidence, not ambition.

Read the status model
SurfaceEvidence
Core turn loop Tested
Provider adapter TestedLive unverified
Telegram channel TestedLive unverified
Approvals Tested
Docker sandbox Contract tested
Updates and signing Partial

Start here

See what the gateway records.

Read the product brief, then build the tree and run the checks yourself.