Skip to content

Configuration Reference

Tarsk stores settings in a local SQLite database and uses markdown files for agent configuration. This reference covers every configuration surface.

All Tarsk data lives under the application support directory:

PlatformDefault path
macOS~/Library/Application Support/Tarsk/
Linux / Windows (CLI)Same path under your home directory

Override with --data-dir, --assets-dir, or these environment variables:

VariableDescription
TARSK_APP_SUPPORT_DIRRoot application support directory
TARSK_DATA_DIRData directory (defaults to <appSupport>/data)
TARSK_ASSETS_DIRCompanion assets next to the compiled server binary

Contents:

File / DirectoryPurpose
data/tarsk.dbSQLite database (projects, threads, settings, conversation history)
data/{repo-slug}/One directory per thread, each a full git clone (numeric suffix on conflict)
port.jsonActive server port (written on server start)
tarsk-logs.txtVerbose log output (--debug or Settings → Settings → Logging)

Settings such as provider API keys, enabled models, UI preferences, and onboarding state are stored in the database, not in JSON config files.

Tarsk uses .agents/ directories for skills, rules, commands, subagents, and MCP configuration. These are markdown files with YAML frontmatter.

ItemGlobal (all projects)Project-level (per repo)
Skills~/.agents/skills/<threadPath>/.agents/skills/
Rules~/.agents/rules/<threadPath>/.agents/rules/
Slash Commands~/.agents/commands/<threadPath>/.agents/commands/
Subagents~/.agents/agents/<threadPath>/.agents/agents/
MCP Config(via Settings UI).agents/mcp.json or mcp.json
AGENTS.md(via Settings UI)Project root (AGENTS.md)

Project-level files override global files with the same name.

---
name: my-skill
description: What this skill does (used for auto-activation)
license: MIT
compatibility: Node.js 18+
allowed-tools: Bash(git *)
when-to-use: Extra matching keywords
disable-model-invocation: false
---
FieldRequiredDescription
nameYesMust match directory name. 1-64 chars, lowercase + hyphens
descriptionYesUsed for keyword-based auto-activation (1-1024 chars)
licenseNoLicense identifier
compatibilityNoSystem requirements text
allowed-toolsNoRestricts which tools and shell commands the skill can use
when-to-useNoAdditional auto-activation keywords
disable-model-invocationNoWhen true, only activates via explicit /skill-name
---
description: What this rule enforces
alwaysApply: false
---
FieldRequiredDescription
descriptionYesTells the agent when to consult the rule
alwaysApplyNotrue = full content always in context; false = on-demand

The rule name is derived from the filename (e.g. coding-standards.md becomes coding-standards).

---
description: What this command does
argumentHint: focus area
mode: plan
---
FieldRequiredDescription
descriptionYesShown in the autocomplete dropdown
argumentHintNoPlaceholder text for user input after the command name
modeNodefault or plan (activates plan mode on use)
actionNoBuilt-in action to execute instead of inserting prompt
---
name: code-reviewer
description: Review code for quality
tools: read grep
agents: [security-auditor]
model: gemini-2.5-flash
provider: google
user-invocable: true
disable-model-invocation: false
---
FieldRequiredDescription
nameYesMust match directory name
descriptionYesShown in the agent picker
toolsNoSpace-separated list of allowed tools
agentsNoList of subagents this agent can invoke
modelNoModel override for this agent
providerNoProvider override for this agent
user-invocableNoWhether the user can invoke directly (default: true)
disable-model-invocationNoHide from agent picker (default: false)

MCP servers are configured in .agents/mcp.json (preferred) or mcp.json (fallback) at the project root. Both servers and mcpServers root keys are accepted.

{
"servers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/allowed/path"],
"env": {
"ALLOWED_DIRECTORIES": "/Users/username/projects"
}
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"DATABASE_URL": "postgresql://user:pass@localhost:5432/db"
}
}
}
}
{
"servers": {
"zapier": {
"url": "https://mcp.zapier.com/api/v1/connect?token=YOUR_TOKEN",
"transport": "streamableHttp",
"headers": {
"Authorization": "Bearer YOUR_TOKEN"
}
}
}
}
FieldTypeRequiredDescription
commandstringFor stdioCommand to start a local server
argsstring[]NoCommand arguments
urlstringFor remoteRemote server URL (SSE or Streamable HTTP)
transportstringNo"sse" or "streamableHttp"
headersobjectNoHTTP headers for remote requests
envobjectNoEnvironment variables for the server
cwdstringNoWorking directory
timeoutnumberNoStartup timeout in milliseconds
VariableDescription
PORTServer port in normal mode (default: 641). Ignored when --debug is set.
MODESet to development for dev server behavior (used by cli web script)
LOCAL_API_URLOverride the Local provider API URL (default: http://127.0.0.1:8000/v1)
LOCAL_API_KEYAPI key for the Local provider
TARSK_DEBUGSet to 1 for extra debug logging (disabled during tests)
TARSK_MICROCOMPACTSet to false to disable microcompact token compression
TARSK_CONTENT_ADDRESSED_OBSERVATIONSSet to false to disable content-addressed tool observations
MCP_OAUTH_CALLBACK_PORTPort for MCP OAuth callback (auto-selected if unset)
BETTERSTACK_SOURCE_TOKENBetter Stack log source token (with BETTERSTACK_INGESTING_HOST)
BETTERSTACK_INGESTING_HOSTBetter Stack ingest host (with BETTERSTACK_SOURCE_TOKEN)
FlagDescription
--serverStart the API server only (do not open a browser tab)
--debugEnable verbose logging (written to tarsk-logs.txt)
--data-dirOverride the data directory
--assets-dirOverride companion assets path
--portServer port (sets PORT)
--openOpen the browser even when --server is set

Debug mode runs the server on port 462 instead of 641.

Missing API keys: Configure provider keys in Settings > Providers. Keys are stored in the database, not in config files.

Debug logs: Run with npx tarsk --debug, or enable Logging in Settings → Settings, to write verbose logs to ~/Library/Application Support/Tarsk/tarsk-logs.txt.

Reset onboarding: Triple-click the Settings item in the settings sidebar to re-run the onboarding wizard.