Configuration
Everything is environment variables. These are the ones that decide where data lives, how large a set may be, and which integrations are active.
Core
| Variable | Default | Notes |
|---|---|---|
VITRINKA_ADDR | :8080 | Listen address. |
VITRINKA_MASTER_KEY | — | Required. 64 hex chars; unlocks app-layer secret encryption. |
BASE_URL | http://127.0.0.1:8080 | Used to build the share URLs the API returns. |
DATA_DIR | ./data | SQLite file vitrinka.db; filesystem blobs under DATA_DIR/blobs. |
MAX_SET_MB | 200 | Request body limit and unpacked-size limit per set. |
VITRINKA_SESSION_TTL | 12h | Absolute session lifetime, enforced server-side. |
VITRINKA_SESSION_IDLE | 30m | Idle timeout. |
AIR_GAP | unset | 1 disables every outbound call — breach checks and update pings. |
LICENSE_FILE | /run/license/license.json | Where the server looks for the vendor-signed licence. |
Blob storage
| Variable | Default | Notes |
|---|---|---|
BLOB_BACKEND | fs | fs or s3. |
S3_ENDPOINT S3_REGION S3_BUCKET | — | Required if BLOB_BACKEND=s3. The bucket is created if missing and validated at startup. |
S3_ACCESS_KEY_ID S3_SECRET_ACCESS_KEY | — | Credentials for that bucket. |
BLOB_CACHE_MAX_GB | 20 | S3 only: a read-through cache under DATA_DIR/blobcache, pre-warmed at boot, oldest-first eviction. 0 disables it. |
Integrations
Each of these is inactive until its variables are set, and unset means the routes are not mounted at all rather than mounted and failing.
| Variable | Notes |
|---|---|
PLANE_API_URL PLANE_API_TOKEN PLANE_WORKSPACE | All three set ⇒ Plane integration active: one upserted comment per set on the referenced issue. |
EVE_URL EVE_SECRET | The AI channel for board mentions and review passes, over HMAC-signed pushes. |
STRIPE_API_KEY STRIPE_WEBHOOK_SECRET | Both set ⇒ billing active. Unset ⇒ every org stays on its stored plan and all billing routes are unmounted. |
VITRINKA_LISTENER_TTL | Default 90. Seconds a listener lease survives between heartbeats before its in-flight work reverts. |
One mailer per install, configured either as SMTP or through a provider key, and administered from the CLI.
vitrinka admin smtp --help