Skip to content

Configuration

Configuration file reference

Hyprlayer stores its configuration in a JSON file.

Platform Path
Linux ~/.config/hyprlayer/config.json
macOS ~/Library/Application Support/hyprlayer/config.json
Windows %APPDATA%\hyprlayer\config.json

Override with --config-file <PATH> on any command.

Terminal window
hyprlayer thoughts config
Terminal window
hyprlayer thoughts config --json
Terminal window
hyprlayer thoughts config --edit
{
"version": 4,
"lastVersionCheck": 1709913600,
"agentsInstalledSha": "d705a48094606e267f817226f553a5c5a9764072",
"agentsInstalledVersion": "1.6.2",
"disableUpdateCheck": false,
"autoUpdate": false,
"thoughts": {
"user": "alice",
"backend": {
"kind": "git",
"thoughtsRepo": "~/thoughts",
"reposDir": "repos",
"globalDir": "global"
},
"repoMappings": {
"/home/alice/Projects/my-project": "my-project",
"/home/alice/Projects/work-app": {
"repo": "work-app",
"profile": "work"
}
},
"profiles": {
"work": {
"backend": {
"kind": "notion",
"parentPageId": "abc123...",
"databaseId": "def456..."
}
}
}
},
"telemetry": {
"mode": "anonymous",
"installationId": "...",
"apiKeySource": "default",
"lastFlush": 0
}
}
Field Type Description
version number Schema version, currently 4
lastVersionCheck number Unix timestamp of the last hyprlayer release check
disableUpdateCheck boolean Set to true to skip the daily release check
autoUpdate boolean Apply updates silently during the daily check. PowerShell-script installs only; every other method keeps the notification
agentsInstalledSha string Commit SHA of the agent bundle on disk
agentsInstalledVersion string Release version of the agent bundle on disk
agentsPinnedVersion string Set by hyprlayer ai reinstall --version; holds the bundle at that release across binary upgrades
lastAgentCheck number Backoff anchor after a failed bundle refresh; cleared on success
Field Type Description
user string Your username (cannot be “global”)
backend object The default storage backend, discriminated by kind (see below)
repoMappings object Maps local repo paths to thoughts directory names
profiles object Named profiles, each { "backend": { ... } }

Each repoMappings entry is a string (directory name) or an object with repo and optional profile.

One object with a kind of git, obsidian, notion, or anytype. The other fields depend on the kind. Optional fields are omitted when unset.

Field Used by Description
thoughtsRepo git Path to the thoughts repository
reposDir git, obsidian Subdirectory for project-specific thoughts
globalDir git, obsidian Subdirectory for cross-project thoughts
vaultPath obsidian Absolute path to the Obsidian vault root
vaultSubpath obsidian Subfolder within the vault (default: hyprlayer)
parentPageId notion Notion parent page ID where the thoughts database lives
databaseId notion Set after the first /create_plan creates the database
spaceId anytype Anytype space ID
typeId anytype Set after the first /create_plan creates the object type
apiTokenEnv anytype Env var holding the Anytype API key (default: ANYTYPE_API_KEY)

See Storage Backends for the full per-backend behavior.

Field Type Description
mode string anonymous, identified, or off
installationId string Per-installation UUID, kept across off/on cycles
apiKeySource string Where the PostHog key came from: default, manual, or github
orgId string Organization tag, when set
lastFlush number Unix timestamp of the last spool flush

Manage these with hyprlayer telemetry rather than by hand.