Configuration
File format
Section titled “File format”Settings live in JSONC: JSON with comments and trailing commas. A published JSON Schema gives editor autocomplete and inline validation in VS Code, Cursor, Zed, JetBrains, and anything else that respects $schema.
Locations
Section titled “Locations”Two files, merged project-over-user (project values win field by field):
~/.config/harnery/config.jsonc: user-global base for every project on the machine (honorsXDG_CONFIG_HOME, falling back to~/.config)<project-root>/.harnery/config.jsonc: the project file, authoritative
CLI flags and HARNERY_* env vars override both per invocation (each field’s env override is noted in the schema reference). A project that sets only web.port keeps a user-global web.bind; the merge is field-by-field, not whole-object.
Schema
Section titled “Schema”Reference the published JSON Schema at the top of your config:
{ "$schema": "https://harnery.com/schemas/config.schema.json",
// ... your settings here}VS Code (and most modern editors) read the $schema URL and provide autocomplete + validation as you type.
Example
Section titled “Example”{ "$schema": "https://harnery.com/schemas/config.schema.json",
// Project identity surfaced to peers + in log lines. "project_name": "my-project",
// Coord layer "coord": { "freshness_seconds": 600, // how stale a peer heartbeat can get before sweep "finalization": { "archive_grace_seconds": 600, "idle_observe_seconds": 259200, "idle_finalize_seconds": 604800, "cascade_grace_seconds": 3600, "reconcile_interval_seconds": 900 }, "run_quality": { "mode": "off" // opt into shadow or report only after local evaluation } },
// Repository-local working files "artifacts": { "default_retention_days": 3 },
// Soft storage budgets for manifest-backed operational and debug logs. "logs": { "storage": { "classes": { "operational-log": { "max_bytes": 134217728, "max_age_days": 30 }, "debug-log": { "max_bytes": 67108864, "max_age_days": 7 } }, "families": { "web-performance-log": { "max_bytes": 67108864, "max_age_days": 14 } } } },
// Web UI "web": { "port": 4276, "bind": "127.0.0.1" },
// Backup (restic) "backup": { "repo": "rclone:gdrive:harnery-backup/my-project", "keep_daily": 7, "keep_weekly": 4, "keep_monthly": 6 }}Log storage values are retention budgets, not write quotas. Harnery keeps
accepting valid records when a family is over budget. Use harn logs list to
see effective limits and pressure, then preview any cleanup with
harn storage maintain before confirming one exact transaction.
See reference / config schema for the full field listing.