Human Approvals with dmint dashboard

The Dmint Dashboard is a lightweight, local web interface that gives human operators real-time oversight over AI agent actions. When an AI agent attempts an action that requires approval, the request is intercepted and displayed in the dashboard for human inspection.

Launching the Dashboard

You can start the dashboard directly from dmint-cli:
By default, the server binds to http://127.0.0.1:8080.

Configuration Options


Dashboard Features

1. 5-Second Real-Time Polling

The dashboard automatically queries /api/dashboard every 5 seconds. When your agent pauses on a sensitive tool call, the card appears on your screen without requiring a browser reload.

2. Deep Argument Inspection

Click any pending request to view:
  • The target capability: tool.action
  • The target resource
  • The exact JSON arguments payload
  • The cryptographic SHA-256 request fingerprint
  • The requesting agent identifier

3. One-Click Approval & Rejection

  • Approve: Dmint’s LocalApprovalAuthority generates an Ed25519 cryptographic signature over the request fingerprint and updates the record state to APPROVED.
  • Reject: Marks the request as REJECTED. The agent’s retry attempt will fail closed immediately.

4. Audit History

The History tab maintains an immutable chronological record of all previously approved, rejected, and consumed actions.

Architecture & Security Rules

No Authentication (Local / Demo Use Only): The dashboard has no user login or authentication layer. It is designed to run locally on 127.0.0.1. Do not expose port 8080 to the public internet without an authenticating reverse proxy (such as Cloudflare Access or Tailscale).

Core Invariants Enforced by Dashboard:

  • Zero Direct SQL: The dashboard package contains zero SQL queries and does not import sqlite3. It accesses data exclusively through Core’s public methods (list_pending(), approve_pending(), reject_pending()).
  • Single Database Ownership: Core is the sole owner of the SQLite schema. The dashboard never creates its own database tables.
  • Thread-Safe SQLite: Uses ThreadSafeApprovalStore with thread-local connections to guarantee safe concurrent access under Uvicorn worker threads.