Components
| Component | What it does |
|---|---|
| griffin-core | TypeScript DSL for writing monitor definitions |
| @griffin-app/griffin | CLI and public package for local development and hub management |
| griffin-hub | Control plane — stores monitors, schedules runs, tracks results |
| griffin-executor | Execution engine that runs monitors and reports results |
Data flow
- You write monitors in
__griffin__/directories using the TypeScript DSL griffin applypushes monitor definitions to the hub- The hub’s scheduler enqueues jobs based on each monitor’s frequency
- The executor picks up jobs, makes HTTP requests, runs assertions, and reports results
- Results flow back to the hub for storage, metrics, and notifications
Deployment modes
Standalone
The hub and executor run in a single process. Simpler to deploy, suitable for single-instance setups.Distributed
The hub and executor(s) run as separate processes. Enables multi-region execution and horizontal scaling. Executors register with the hub, receive jobs via a queue (PostgreSQL or SQS), and report results back.Monitors
A monitor is the unit of work in Griffin. It’s a JSON document containing:- Nodes — the steps in your monitor (HTTP requests, waits, assertions)
- Edges — the execution order between nodes
- Frequency — how often the monitor runs
- Locations — where the monitor executes (in distributed mode)
Execution model
Monitors are executed as directed graphs. Each node runs in order defined by the edges, and results from earlier nodes (status codes, response bodies, headers) are available to later nodes for assertions and variable extraction.Execution Model
Learn more about graph-based execution.