Configuration
Config file location
The CLI stores its configuration in a TOML file:
| Platform | Path |
|---|---|
| macOS / Linux | ~/.config/jsm/config.toml |
| Windows | %APPDATA%\jsm\config.toml |
The file is created automatically on first run or when you run jsm setup.
Reading and writing values
# Show the full config
jsm config show
# Read a single key
jsm config get notifications.check_interval_hours
# Set a value
jsm config set notifications.check_interval_hours 12
# Reset everything to defaults
jsm config reset
Configuration keys
General
| Key | Type | Default | Description |
|---|---|---|---|
api_url | string | https://jeffreys-skills.md | API base URL |
auth_method | string | oauth | Authentication method (oauth or api_key) |
skills_dir | path | (auto) | Override the skill installation directory |
cache_dir | path | (auto) | Override the cache directory |
verbose | bool | false | Enable verbose logging globally |
User
| Key | Type | Default | Description |
|---|---|---|---|
user.projects_dir | path | - | Preferred projects root directory |
user.projects_symlink | path | - | Convenience symlink to projects_dir |
user.setup_complete | bool | false | Whether first-time setup has been run |
Skills directories
| Key | Type | Default | Description |
|---|---|---|---|
skills.claude_dir | path | ~/.claude/skills | Claude Code skills directory |
skills.codex_dir | path | ~/.codex/skills | Codex skills directory |
skills.gemini_dir | path | ~/.gemini/skills | Gemini skills directory |
Network
| Key | Type | Default | Description |
|---|---|---|---|
network.offline_mode | bool | false | Disable all network requests |
Setting network.offline_mode to true is equivalent to passing
--offline on every command or setting JSM_OFFLINE=1.
Notifications
| Key | Type | Default | Description |
|---|---|---|---|
notifications.show_update_banners | bool | true | Show update banners in CLI output |
notifications.check_interval_hours | int | 24 | How often to check for updates (0 = never) |
notifications.banner_quiet_hours | int | 24 | Quiet period between banners |
notifications.show_tips | bool | true | Show tips and suggestions |
Email notifications
| Key | Type | Default | Description |
|---|---|---|---|
notifications.email.enabled | bool | false | Enable email notifications |
notifications.email.address | string | - | Email address for notifications |
notifications.email.frequency | string | weekly | Frequency: immediate, daily, or weekly |
Webhook notifications
| Key | Type | Default | Description |
|---|---|---|---|
notifications.webhook.enabled | bool | false | Enable webhook notifications |
notifications.webhook.url | string | - | Webhook URL (must be http:// or https://) |
Environment variables
The CLI respects these environment variables, which take priority over the config file:
| Variable | Description |
|---|---|
JSM_OFFLINE | Set to 1 to enable offline mode |
HTTPS_PROXY | HTTP proxy for all requests |
Example config file
api_url = "https://jeffreys-skills.md"
auth_method = "oauth"
verbose = false
[user]
projects_dir = "/home/user/projects"
setup_complete = true
[skills]
claude_dir = "/home/user/.claude/skills"
codex_dir = "/home/user/.codex/skills"
gemini_dir = "/home/user/.gemini/skills"
[notifications]
show_update_banners = true
check_interval_hours = 12
show_tips = true
[notifications.email]
enabled = true
address = "you@example.com"
frequency = "daily"
[network]
offline_mode = false
Skill update preferences
Control how the CLI handles skill updates:
# View current preference
jsm config update-preference
# Set preference
jsm config update-preference auto # apply updates automatically on sync
jsm config update-preference notify # show a notification, don't apply
jsm config update-preference manual # never auto-update