Skip to contentSkip to Content
DeploymentDeployment

Deployment

A board can live in Git, SQLite or Postgres. Deploying it means choosing who reads its cards and who can change them. The right mode depends on whether you need to publish a snapshot, edit from one machine or let a team save changes from their browsers.

Data storage compares each method’s advantages, tradeoffs, backups and CLI, skill and MCP support.

ModeBoard changes and authenticationSaved settings
Static · no backendRead-only build snapshot. Export move commands; the page cannot commit them. No GitHub sign-in or discovery of private sources.Filters and layout: this browser only. Shared board configuration requires a commit and rebuild.
Local · local serverCommits to the checkout as its Git user; does not push. Local bearer token, no GitHub sign-in.Card changes: local Git. Filters and layout: this browser only.
Hosted · remote backend with persistent authorization storageCommits to each card’s source as the signed-in editor. Loads cards from all configured GitHub sources. GitHub App + backend required. CLI and MCP use source-bound tokens.Card changes: Git. Configured sources, filters and layout: this browser only, separated by account. No preference sync between devices.
SQLite · Docker or Render with persistent diskStores changes and revisions in a database. GitHub login or explicit token access. GitHub and database sources can share one signed-in workspace. CLI and MCP use the same tokens and API.Card changes: SQLite on persistent disk. Filters and layout: this browser only. No preference sync between devices.

What is remembered

The canvas remembers its filter, collapsed columns and panel sizes. Named filters are reusable views. Hosted entry loads every configured source into one canvas. Profile → Settings → Sources configures the sources; source: and project: filters select which cards to show. The setup page appears only when there is no source or no source can be read. Shared filters take precedence over the remembered view. A shared source link adds that authorized source to the workspace without hiding the others.

Browser preferences are not shared board configuration. Clearing browser data removes them; a browser that blocks storage keeps changes only for the current page. A backend makes card edits durable, but it does not currently store personal view settings. Columns and other board.yaml settings are edited in the source repository.

A valid hosted session can show its last checked board and repository list from browser storage while the backend revalidates them. Cached cards are read-only until access is checked again. The cache is bounded, tied to the backend, account session and configured sources, and discarded on sign-out or an authorization refusal. Confirmed card edits update the saved copy. The sync indicator describes backend data; personal preferences remain local.

GitHub authentication is a hosted capability, not a feature of GitHub Pages. The GitHub backend can run on your own HTTPS deployment. SQLite uses the same board API, with sign-in chosen independently of storage. Each GitHub source is a repository, branch and board folder, independently authorized by the backend. If one source fails, the others remain visible and its error appears in settings.

Static: the board as a published page

folio-agents build exports the kanban with the rest of the site. The page reads the board as it was at build time; a drag stages a move in the browser and Export moves prints the folio-agents board move commands to commit. Nothing runs after the build, so the export goes wherever static files go.

A static page can be published on GitHub Pages with deploy.provider: "github-pages" and the correct base path. Quickstart turns the canvas on. This site’s board uses a hosted API: GitHub Pages serves the page, and the backend supplies the authorized cards after sign-in.

Local: the board server on loopback

folio-board-server api runs beside the checkout that holds the board, and the same page edits cards, one commit per save. The server answers loopback only, asks for a bearer that is new on every start, and commits in the local checkout without pushing. Edit the board in the browser sets it up.

Hosted: a board a team edits

The kanban stays on GitHub Pages and the board server runs on Render, signed in with a GitHub App: collaborators edit from the browser, each commit under their own name, and nobody runs a machine. Deploy a hosted board takes it step by step.

SQLite: your own database and server

Choose board.store.kind: sqlite and a database file. The board API persists changes independently of GitHub. Keep the GitHub login and combine database and repository sources, or explicitly choose standalone token access. The server needs persistent storage, and view preferences remain in the browser. Configure SQLite covers local and HTTPS deployments.

Postgres: remote, portable persistence

Choose board.store.kind: postgres and a connection environment variable. Vanilla Postgres and Supabase use the same backend adapter. Database hosting, API hosting and sign-in remain separate choices. Postgres and Supabase documents configuration, free plan limits and backups.

API tokens and remote CLI connect tools to a single source. MCP serves the same operations at /mcp.

Render and Docker packages the API, SQLite, CLI and MCP with a persistent volume and documents the paid Render disk.