Skip to content

DUMB API

The DUMB API is the central communication layer between the DUMB Frontend and the backend service. It handles requests for logs, service management (start/stop), configuration updates, and health checks.

Access model

The maintained Compose file does not publish port 8000. The API binds to 127.0.0.1:8000 inside the DUMB container and dmbdb proxies it through the normal frontend address:

Use URL
REST through dmbdb http://<host>:3005/api/<backend-path>
WebSockets through dmbdb ws://<host>:3005/ws/<stream>
Native API inside the container http://127.0.0.1:8000/<backend-path>

For example, native /process/processes is exposed as /api/process/processes through dmbdb. WebSocket routes do not gain an /api prefix.

The proxy is available to more than the dashboard itself. Scripts, integrations, and other API clients can call http://<host>:3005/api/...; dmbdb removes the gateway prefix and forwards the request to FastAPI. The backend performs the same authentication and authorization checks regardless of which access path was used.

Direct exposure

Setting host to 0.0.0.0 and publishing port 8000 exposes powerful lifecycle and configuration endpoints. Enable DUMB authentication and restrict the port to trusted networks before doing this.


Configuration Settings in dumb_config.json

Located in dumb.api_service:

"enabled": true,
"process_name": "DUMB API",
"log_level": "INFO",
"host": "127.0.0.1",
"port": 8000

Configuration Key Descriptions

  • enabled – Whether the API service should run.
  • process_name – Used in process management and logs.
  • log_level – Logging verbosity for the API.
  • host – Address on which the backend listens. Keep the default loopback value when using dmbdb.

    0.0.0.0 allows access to the API from all addresses

  • port – Internal backend listener port. It is not automatically published to the Docker host.

What the API owns

  • Optional JWT authentication and user setup
  • Service lifecycle, dependency graphs, update controls, and onboarding
  • DUMB and service configuration validation/persistence
  • Logs, current metrics, metrics history, Database Health, and notifications
  • Symlink repair/snapshots and guarded SQLite-to-PostgreSQL migration jobs
  • Optional AI diagnostic bundle preview and provider calls
  • Real-time log, status, and metrics WebSockets

The backend advertises optional features through GET /process/capabilities. Frontends and automation should gate newer actions on these capability flags instead of assuming every DUMB version supports every endpoint.

Health and interactive schema

  • Native health check: GET /health
  • OpenAPI JSON: /openapi.json
  • Swagger UI: /docs
  • Scalar UI: /scalar

The interactive documentation endpoints live on the native backend listener. See the API overview for access choices and the complete reference.

Persistence and logs

API settings are stored with the main runtime configuration at /config/dumb_config.json. Authentication users and the generated JWT secret are stored separately at /config/users.json. DUMB logs are written below the configured /log directory.

When the backend exposes runtime_api_log_level, the DUMB API service page can temporarily enable DEBUG logging for the running DUMB and Uvicorn loggers. This requires no restart, does not modify dumb_config.json, and automatically returns to configured logging after the override is disabled or the container restarts. It does not change managed-service verbosity.