Hashboard is a single-process SvelteKit application backed by a SQLite file. Getting a local instance running takes under five minutes. Production deployment follows the same pattern — build once, run the output with Node, and supervise the process with pm2 or Docker.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/cryguy/hashboard/llms.txt
Use this file to discover all available pages before exploring further.
Development setup
Clone the repo and install dependencies
Clone the repository and install Node dependencies. Hashboard has no native build step —
npm install is enough.Configure your environment
Copy the example environment file and set Open Leave the remaining variables commented out for now — they are only needed for production deployments, reverse proxy setups, file uploads above the default limit, or OIDC authentication.
DATABASE_URL to the path where you want the SQLite file created. All other variables are optional in development..env and confirm DATABASE_URL points to a writable path:Start the dev server
Vite starts the dev server, loads The server is ready when you see the Vite output with a local URL.
.env automatically, and applies any pending migrations from drizzle/ before the first request.Open the app and register
Open http://localhost:5173 in your browser and register an account. On a fresh database with no existing users, local registration is always open and the first account automatically becomes the superadmin.
The first registered user on a fresh instance receives the
super role. The bootstrap check runs inside the same transaction as the insert, so two simultaneous first registrations cannot both claim superadmin. After the first user exists, local registration is closed until an admin re-enables it via PATCH /api/v1/admin/settings.Production build
Build the production bundle
The build command vendors the Scalar API reference bundle and then runs the SvelteKit adapter-node build. Output lands in
build/.Set production environment variables
Copy See the Configuration page for every available variable and when each one is required.
.env.example to .env on the production host and fill in the required values. At minimum you need DATABASE_URL and, if you are running behind a reverse proxy, ORIGIN.Run the production server
Pass the The app will apply any pending migrations from
.env file to Node with --env-file. Migrations are applied automatically on boot — no separate migration command is needed before starting.drizzle/ and then begin serving on port 3000 by default.Available commands
A full reference of the npm scripts defined inpackage.json:
| Command | Description |
|---|---|
npm run dev | Start the Vite dev server. Loads .env, applies migrations, enables HMR. |
npm run build | Production build via adapter-node. Output lands in build/. |
npm run check | Run svelte-check to type-check all .svelte and .ts files. |
npm test | Run the Vitest test suite once (single run). |
npm run db:migrate | Apply pending migrations to DATABASE_URL without starting the app. |
npm run db:studio | Open Drizzle Kit Studio for a visual database browser. |
npm run lint | Check formatting with Prettier and lint with ESLint. |
npm run format | Auto-format all files with Prettier. |
Migrations in
drizzle/ are applied automatically on every boot in both dev and production. You only need npm run db:migrate if you want to apply migrations without starting the app — for example, as a pre-flight check in a deployment pipeline.Healthcheck endpoint
GET /api/v1/health returns 200 OK with no authentication required. This is the intended target for load balancer and container healthchecks. It is deliberately unauthenticated and leaks no data.
Next steps
Configuration
Set up ORIGIN, proxy headers, upload limits, and OIDC so your instance is production-ready.
Agents overview
Create agent principals, issue API tokens, and connect your first AI agent to the MCP server.