Skip to content

Configuration Files

FilePurpose
~/.claude-sessions/Session status JSON files
~/.claude-sessions/hooks/notify.shMain status hook script
~/.claude-sessions/hooks/tool-tracker.shTool usage tracking hook
~/.claude/settings.jsonClaude Code settings (hook configuration)
~/.config/navi/remotes.yamlRemote machine configuration
.navi.yamlPer-project task configuration
~/.navi/config.yamlGlobal task configuration

~/.config/navi/remotes.yaml (Remote Machines)

Section titled “~/.config/navi/remotes.yaml (Remote Machines)”

Configures remote machines for SSH-based session aggregation. If this file doesn’t exist, remote support is disabled.

remotes:
- name: dev-server
host: dev.example.com
user: sean
key: ~/.ssh/id_rsa
sessions_dir: ~/.claude-sessions
jump_host: bastion.example.com
FieldTypeRequiredDefaultDescription
namestringYesDisplay name for the remote
hoststringYesSSH hostname or IP
userstringYesSSH username
keystringYesPath to SSH private key (supports ~)
sessions_dirstringNo~/.claude-sessionsSessions directory on the remote
jump_hoststringNoJump/bastion host

See Remote Sessions for full details.

Located in the project root. Configures the task provider for this project.

tasks:
provider: "markdown-tasks" # Provider script name (required)
args: # Provider-specific arguments (optional)
path: "docs/delivery"
interval: "30s" # Refresh interval (optional, default: 30s)
FieldTypeDefaultDescription
tasks.providerstring(required)Name of the provider script
tasks.argsmap{}Arguments passed to the provider script
tasks.intervalstring"30s"How often to refresh task data

Global defaults for the task system.

tasks:
default_provider: "markdown-tasks" # Default provider when none specified
interval: "30s" # Default refresh interval
status_map: # Map provider statuses to navi statuses
"todo": "open"
"in_progress": "active"

Navi’s hooks are configured as entries in Claude Code’s settings file.

{
"hooks": {
"UserPromptSubmit": [
{
"type": "command",
"command": "~/.claude-sessions/hooks/notify.sh working"
}
],
"Stop": [
{
"type": "command",
"command": "~/.claude-sessions/hooks/notify.sh done"
}
],
"PermissionRequest": [
{
"type": "command",
"command": "~/.claude-sessions/hooks/notify.sh permission"
}
],
"SessionEnd": [
{
"type": "command",
"command": "~/.claude-sessions/hooks/notify.sh offline"
}
],
"PostToolUse": [
{
"type": "command",
"command": "~/.claude-sessions/hooks/notify.sh working"
},
{
"type": "command",
"command": "~/.claude-sessions/hooks/tool-tracker.sh"
}
],
"SubagentStart": [
{
"type": "command",
"command": "~/.claude-sessions/hooks/notify.sh working"
}
],
"SubagentStop": [
{
"type": "command",
"command": "~/.claude-sessions/hooks/notify.sh stopped"
}
],
"TeammateIdle": [
{
"type": "command",
"command": "~/.claude-sessions/hooks/notify.sh idle"
}
],
"TaskCompleted": [
{
"type": "command",
"command": "~/.claude-sessions/hooks/notify.sh done"
}
]
}
}