Prerequisites
- Python 3.12
- uv, for example
brew install uv - Docker, for the local tracker stack
Install the CLI from source
.venv and installs the dependencies declared in pyproject.toml.
To run valkyrie without the uv run prefix, install it as a tool:
uv tool update-shell if the executable is not on your PATH.
Point the CLI at a local tracker
.env or your shell before running CLI commands against a local tracker. The CLI still reads credentials from ~/.config/valkyrie/valkyrie.yaml, created by valkyrie config init. See Configure the CLI.
Run the tracker locally
http://localhost:8000. Local Compose runs the tracker, PostgreSQL, and Redis only. It does not execute benchmarks. See Tracker service for the individual targets and test suites.
Run it with hosted-mode authentication
DESCOPE_MANAGEMENT_KEY is server-side tracker configuration. It lets the local tracker resolve the access key’s bound user email through Descope’s management API when you are testing hosted-mode run attribution. The tracker expects the access-key exchange response to expose the bound user id through custom claims:
valkyrie config init and choose hosted mode. Without these variables the service runs in self-hosted mode with no auth and a default organization.
Check your changes
Preview the documentation
The published documentation is generated fromdocs/. Local preview needs Node.js 20.17 or newer and no Mintlify credentials:
npx mint login only to test account-backed features such as search and the assistant.
docs/reference/ is generated from the CLI and SDK source. Run make docs-reference after changing a public CLI or SDK surface. CI runs make docs-reference-check and fails on stale output.
Versioning and releases
Theprod branch uses semantic versioning through github-tag-action. Include the tag in the pull request title:
Binaries are released when a commit is tagged: dev requires tagging a commit manually, prod is tagged and released automatically on push.
valkyrie-sdk is versioned and published separately.
