Skip to content

Runtime Model

Spurline follows the same broad application shape as Grove and Safebox Web:

  • FastAPI app factory;
  • Uvicorn runtime;
  • HTTP routes for health and metadata;
  • WebSocket routes for live protocol traffic;
  • SQLite for local persistence;
  • Poetry for dependency and command management.

Components

spurline.main      FastAPI app factory and route definitions
spurline.config    runtime settings
spurline.events    event validation and ID calculation
spurline.filters   NIP-01 filter matching
spurline.store     SQLite event persistence
spurline.cli       Uvicorn launcher

The relay protocol logic is kept close to the FastAPI WebSocket route while storage, event validation, and filter matching remain separate modules.

Local-first defaults

The default bind address is:

127.0.0.1:8080

The default database path is:

spurline.sqlite3

For ordinary local use, prefer an explicit data directory:

poetry run spurline --database ./data/spurline.sqlite3