951e6f83716cc52ab367d8a6871ccbeb1cb0a493
- Added a new KV store API with endpoints for querying namespaces and key-value pairs. - Introduced fingerprinting functionality to hash and manage data fingerprints, allowing for efficient change detection. - Enhanced existing scripts to utilize the new fingerprinting capabilities, enabling conditional execution based on data changes. - Updated the web interface to include a dedicated KV page for managing key-value entries and displaying their details. - Improved overall user experience with pagination and search capabilities in the KV management interface.
scrunner
Workflow runner with a sandboxed script engine, SQLite run history, and an admin UI.
Packages
packages/server— Fastify runner, HTTP/cron triggers, admin REST APIpackages/web— React admin UI (Vite, DaisyUI, React Query)
Setup
pnpm install
pnpm dev
- API: http://localhost:9000
- UI (dev): http://localhost:5173
The first account created becomes admin. Later accounts are created from Users.
Scripts
| Command | Description |
|---|---|
pnpm dev |
Server + Vite together |
pnpm dev:server |
API/runner only |
pnpm dev:web |
UI only (proxies /api to :9000) |
pnpm build |
Production UI build |
pnpm start |
Serve API and built UI from :9000 |
pnpm migrate |
Apply SQLite migrations |
Environment
| Variable | Default | Notes |
|---|---|---|
SCRUNNER_JWT_SECRET |
scrunner-dev-secret (dev only) |
Required in production |
SCRUNNER_SECRETS_KEY |
scrunner-dev-secrets-key (dev only) |
Master key for named secrets. Required in production. Changing it makes existing secrets unreadable. 64 hex chars are used as a raw AES-256 key; any other string is derived with scrypt. |
SCRUNNER_DB_PATH |
packages/server/data/scrunner.db |
SQLite file |
SCRUNNER_LOG_LEVEL |
debug |
Pino level |
SCRUNNER_RETENTION_DAYS |
30 |
Run history prune |
SCRUNNER_CORS_ORIGIN |
http://localhost:5173 |
Vite origin in dev |
PORT |
9000 |
HTTP port |
NODE_ENV |
— | Set production for secure cookies |
Production
pnpm install
pnpm build
SCRUNNER_JWT_SECRET=... SCRUNNER_SECRETS_KEY=... NODE_ENV=production pnpm start
The server serves packages/web/dist when that folder exists.
Languages
JavaScript
99.9%