Documentation

Providers

Ryvem is provider-agnostic by contract: a board is an interface, and so is a repository host. Connect Jira, connect GitLab, or run entirely on the built-in local board — the rest of the system does not change.

The provider model

Three kinds of provider sit behind small, stable contracts. Each row below is an implementation you can select; adding another is a single adapter, not a rewrite.

ContractImplementationsSelected by
BoardJira · Trello · Local (graph-backed)RYVEM_PROVIDER
Version controlGitHub · Bitbucket · GitLab (incl. self-hosted)the token you set (the host your repo uses)
Docs / knowledgeConfluenceshares the Jira token when scoped

Credentials live in a plain .env next to the binary — written by the setup wizard or by hand. Nothing is sent anywhere; the file is read locally at start-up. This page details the two providers most often configured by hand — Jira and GitLab — and the local board that needs no credentials at all. Trello, GitHub, and Bitbucket are covered on Getting started; the full environment reference is on Configuration.

Jira

Jira is the default board provider. You need three values: your site's base URL, your Atlassian account email, and a scoped API token. The wizard asks for them in that order and writes them to .env.

FieldExampleNotes
Base URLhttps://yourco.atlassian.netyour Jira Cloud site root
Emailyou@company.comthe Atlassian account the token belongs to
TokenATATT…an API token with scopes (below)

Create the token

Go to Atlassian account › Security › API tokens › Create API token with scopes — the page the wizard prints, https://id.atlassian.com/manage-profile/security/api-tokens. Name it ryvem-mcp, choose the Jira product, and grant exactly these scopes:

ScopeGrants
read:jira-workread boards, issues, comments, transitions
write:jira-workcreate and update issues, comment, move, link
read:jira-userresolve assignees and board members

The resulting .env keys:

RYVEM_PROVIDER=jira
JIRA_URL=https://yourco.atlassian.net
ATLASSIAN_EMAIL=you@company.com
JIRA_TOKEN=your-atlassian-api-token

Confluence rides the same token

If your token is scoped for Confluence too, the docs tools work with no extra setup: CONFLUENCE_URL defaults to <JIRA_URL>/wiki and CONFLUENCE_TOKEN defaults to JIRA_TOKEN. Set them explicitly only to override.

Jira supports native subtasks, issue links, and comment properties, and exposes its projects as workspaces that create_task can target. It does not create boards over the API — a Jira project needs an admin and a template.

GitLab

GitLab is one of the three version-control providers (GitHub and Bitbucket are the others). Ryvem models merge requests as pull requests, addressed by their per-project iid. Set only the token for the host your repository actually uses; the origin remote decides the project on every call.

Create the token

In GitLab, go to User settings › Access tokens and create a Personal Access Token. The wizard prints the exact page for your host — https://gitlab.com/-/user_settings/personal_access_tokens for the cloud, or https://<your-host>/-/user_settings/personal_access_tokens for a self-hosted instance. One scope is required:

ScopeGrants
apiread and write merge requests, discussions, reviews, and the token owner's identity

For gitlab.com, the token is all you need:

GITLAB_TOKEN=glpat-xxxxxxxxxxxxxxxxxxxx

For a self-hosted instance, add the host (no scheme, no path). Leaving it blank means gitlab.com:

GITLAB_TOKEN=glpat-xxxxxxxxxxxxxxxxxxxx
GITLAB_HOST=gitlab.yourcompany.com

No email for GitLab

GitLab authenticates with the token alone (the PRIVATE-TOKEN header needs no email), so GITLAB_EMAIL is intentionally ignored. If a token stops working, the API surfaces a 401 — create a fresh token with the api scope and update GITLAB_TOKEN.

Local board

The local board is what makes Ryvem run in any repository — personal or corporate, with or without a tracker. It is a full board (columns, tasks, subtasks, links, comments) backed entirely by the memory graph, so there is no external service, no account, and no network. Decline every wizard prompt and Ryvem boots on it automatically; there is nothing to create.

# No .env at all also works — this is only explicit.
RYVEM_PROVIDER=local

What it stores, and where

One board is auto-created per repository, anchored to the working copy the server runs in and keyed to that repo's graph scope (repo:<uuid>). Tasks, comments, subtasks, and links all live as graph nodes and edges — descriptions and comments are native markdown. It ships with four columns in flow order:

ColumnCategory
Backlogtodo
To Dotodo
In Progressin_progress
Donedone

Task keys are <SLUG>-<n>, where the slug is derived from the repository folder name and n is a gap-free, strictly increasing counter. Everything persists in the single SQLite memory graph:

PlatformDefault location
macOS / Linux~/.ryvem/dev.db
Windows%USERPROFILE%\.ryvem\dev.db

Override the parent directory with RYVEM_DATA_DIR. Because the board is just graph data, its history and search behave exactly like the rest of the memory graph.

Limits

AreaBehaviour
Membershipsingle user — whoAmI is your name (default you), and "my tasks" is every open (non-done) task
Searchplain full-text (graph BM25); there is no JQL — a query is always treated as free text
Attachmentsnone stored — attachment downloads fail actionably rather than returning bytes
Workspacesnot applicable — the local board neither lists workspaces nor creates boards over the API

None of this is a dead end: a card created on the local board can later be promoted to Jira or Trello once you connect one.

Switching providers later

Edit .env and restart the server — no migration step. The local board's data stays in the graph and remains queryable even after you point RYVEM_PROVIDER at Jira or Trello.