Skip to main content
Meridian reads its configuration from ~/.meridian/.env, which the installer creates and populates during ./install.sh. You can edit it at any time with meridian config edit. Changes take effect after a meridian restart. Every variable has a safe default; you only need to set the ones relevant to your workflow. The sections below list every supported variable grouped by the part of Meridian that reads it.

Core Daemon

These variables control how the Rust ETL daemon reads screenpipe data and writes to its own database.
VariableDefaultDescription
SCREENPIPE_DB~/.screenpipe/db.sqlitePath to screenpipe’s SQLite database. Meridian opens this file read-only. Change it only if you run screenpipe with a custom --data-dir.
MERIDIAN_DB~/.meridian/meridian.dbPath where Meridian creates and writes its own database. The MCP server reads from the same path.
POLL_INTERVAL_SECS60How often (in seconds) the daemon wakes up to check for new screenpipe frames. Lower values give more granular sessions at the cost of slightly higher CPU usage.
CLASSIFICATION_ENABLEDtrueWhen true, the daemon sends each completed session to the MLX server for task classification. Set to false to run ETL and app-category tagging only, with no MLX server required.
MLX_SERVER_PORT7823The port that the persistent MLX inference server listens on. Must match the value you passed to install-mlx-server-daemon.sh.
CLASSIFIER_BACKENDhermesClassification backend. hermes is the default; set to mlx to use the local MLX inference server at 127.0.0.1:<MLX_SERVER_PORT> instead.
CLASSIFICATION_TIMEOUT_S120Maximum seconds the daemon waits for the MLX server to respond to a single session classification request before timing out and moving on.
RUST_LOGmeridian=infoLog verbosity for the Rust daemon, passed directly to the env_logger crate. Use meridian=debug for verbose output during troubleshooting.
Setting CLASSIFICATION_ENABLED=false lets you run the full ETL pipeline — including session segmentation and app-category tagging — without starting the MLX server at all. This is useful on machines without Apple Silicon, or when you only need raw session data.

Jira

All three credential variables must be set for the Jira connector to activate. The connector fetches open issues and the classification pipeline links sessions to ticket keys.
VariableDefaultDescription
JIRA_BASE_URL(none)Your Atlassian instance URL, e.g. https://your-org.atlassian.net.
JIRA_EMAIL(none)The email address of the Atlassian account whose API token you are using.
JIRA_API_TOKEN(none)A Jira API token. Generate one at id.atlassian.com/manage-profile/security/api-tokens.
JIRA_PROJECT_KEYS(all projects)Comma-separated list of project keys to sync, e.g. KAN,ENG. When empty, all projects the account can access are included.

GitHub

GITHUB_TOKEN is required to enable the GitHub connector; GITHUB_PROJECT_IDS selects which Projects (v2) Meridian reads from. Open issues assigned to you on those boards are pulled into pm_tasks via the GraphQL API, with each issue’s Project Status field mapped to a status_category. Run meridian setup to obtain the token through the gh CLI and pick projects interactively.
VariableDefaultDescription
GITHUB_TOKEN(none)A GitHub OAuth token (extracted from gh auth token by meridian setup) or a classic personal access token with the repo, read:org, and read:project scopes. Create a PAT at github.com/settings/tokens.
GITHUB_PROJECT_IDS(none — no sync)Comma-separated GitHub Projects v2 node IDs (each starts with PVT_), e.g. PVT_kwHOAB123,PVT_kwHOCD456. When empty, no GitHub tasks are synced. List your project IDs with gh api graphql -f query='{ viewer { projectsV2(first: 10) { nodes { id title } } } }'.

Linear

Set LINEAR_API_KEY to enable the Linear connector.
VariableDefaultDescription
LINEAR_API_KEY(none)Your Linear API key. Find it at linear.app/settings/api.
LINEAR_TEAM_IDS(all teams)Comma-separated Linear team IDs to sync, e.g. TEAM1,TEAM2. When empty, all teams the key can access are included.

MCP Server

The MCP server reads one variable at startup to locate the database.
VariableDefaultDescription
MERIDIAN_DB~/.meridian/meridian.dbOverride the database path for the MCP server process. Useful if you maintain multiple Meridian databases or run the MCP server from a non-standard environment.

Minimal Example Configuration

The block below shows the minimum set of variables needed to run the full Meridian stack with Jira classification enabled. Copy it to ~/.meridian/.env and fill in your values, or use meridian config edit to open the file directly.
# ~/.meridian/.env

# ── Core ──────────────────────────────────────────────────────────────────────
POLL_INTERVAL_SECS=60
CLASSIFICATION_ENABLED=true
MLX_SERVER_PORT=7823
RUST_LOG=meridian=info

# ── Jira ──────────────────────────────────────────────────────────────────────
JIRA_BASE_URL=https://your-org.atlassian.net
JIRA_EMAIL=you@your-org.com
JIRA_API_TOKEN=your-api-token-here
JIRA_PROJECT_KEYS=KAN,ENG

# ── GitHub ────────────────────────────────────────────────────────────────────
GITHUB_TOKEN=ghp_your_personal_access_token
GITHUB_PROJECT_IDS=PVT_xxx,PVT_yyy

# ── Linear ────────────────────────────────────────────────────────────────────
LINEAR_API_KEY=lin_api_your_key_here
After editing ~/.meridian/.env, run meridian restart to apply the new values. The daemon reads the file once at startup and does not hot-reload changes.