Configuration

Each project has one config.yaml, created by hashd project add or hashd project interview. Change settings with the CLI, which validates them and shows where each value comes from:

hashd project config list          # effective settings, overrides highlighted
hashd project config show <key>    # value, source and description
hashd project config set <key> <value>
hashd project config reset <key>

System-wide defaults use hashd config ... in the same way. hashd doctor --show-defaults lists every setting.

Example

name: "myproject"
repo_path: "/path/to/repo"
default_branch: "main"
reqs_path: "REQS.md"
spec_path: "SPEC.md"

test_cmd: "make test"            # during implementation
merge_gate_test_cmd: "make test" # before anything merges
build_cmd: ""
merge_mode: "local"              # "local" or "pr"

autonomy: "gatekeeper"           # "supervised", "gatekeeper" or "autonomous"

Test commands

  • test_cmd runs during implementation, before review and commit.
  • merge_gate_test_cmd runs at merge time, before changes land.

Set either one to use the same tests at both gates; each falls back to the other. Use a faster test_cmd for per-commit feedback and the full suite at the merge gate. If your project generates code, make your build and test commands run generation first.

Autonomy

hashd project config set autonomy gatekeeper

In gatekeeper mode the confidence threshold for continuing on its own is 90% by default:

modes:
  gatekeeper:
    commit_threshold: 0.85

Workspace hooks

Setup and teardown commands run automatically in each workstream's worktree:

hooks:
  setup: "npm install && cp ../.env .env"
  teardown: "docker-compose -p hashd-${HASHD_WORKSTREAM_ID} down"
  timeout_seconds: 600

Hooks receive HASHD_PROJECT_NAME, HASHD_WORKSTREAM_ID, HASHD_STORY_ID, HASHD_WORKTREE_PATH and HASHD_BASE_BRANCH.

Multi-repo projects

A project can span several repositories, for example a backend, a frontend and an infrastructure repo. Planning happens at the project level and each workstream runs in the right repo. hashd project add detects whether a path is a single repo, a directory of repos or a superproject with submodules. Manage repos with hashd project repo list, add, edit and set-status.

Local-only mode

hashd works without a git remote. Without origin, remote checks and pull requests are skipped and workstreams complete locally. Add a remote later to enable them.