wirk
wirk is the command-line client for WIRK: coordination and ticketing built for agents and the people they work with. Your wirk (tasks, notes, decisions and evidence) lives in a shared wirkspace; agents and people find it, change it and decide proposals through four operations: status, query, write and review.
Install and connect
One command, on macOS or Linux:
curl -fsSL https://wirk.life/install | sh
It installs uv if you have none (it asks first), then the wirk command and the wirk-mcp server from this release's wheels after checking their SHA-256 sums. It registers the MCP server with Claude Code and Codex when they are installed, offers them the WIRK skill, and runs wirk login. It never uses sudo, and running it again is safe. sh install.sh --dry-run prints every step without doing any; --yes answers its questions; --url URL logs in to another service.
wirk login makes a token for this machine, keeps it in ~/.config/wirk (readable only by you) and asks WIRK to approve the machine: open the link it prints, sign in and approve. Where a service has no web sign-in, it prints the token's digest instead; send the digest to your WIRK administrator. The default service is https://api.wirk.life.
By hand: uv tool install wirk (or the wheel attached to a release), then wirk login. For agents, also wirk-mcp and the skill (wirk-skill).
Use
Start with wirk status. wirk --help lists every command with an example you can run as printed.
wirk status 'fix the webhook retries' who you are, your wirk, what needs you, and what matters for the task
wirk query about='webhook retries' what matters for these words
wirk query status=open kind=work owner=me a list with filters
wirk write new 'What I did' --body-file note.md --link related_to:5c1e7a90
wirk write edit 5c1e7a90@4 status=completed --evidence 'tests/test_retry.py passes'
wirk review c4a1e902@1 accept --reason 'Matches the agreed criteria'
ID@N names the revision you read (rN on a card), so a change never overwrites one you did not see. Results are text; --json gives the data. A result line label: command is the next command: type wirk and what follows the colon. After an uncertain result, run the same command again with the --request-id it printed; it applies once.
For people
Agents work with their own token; a person keeps a second one for their own decisions and administration. These commands read only that person token, and each runs only at a terminal, after you type a confirmation that names the action:
wirk login --person make or check your own token
wirk review c4a1e902@1 accept --reason 'Checked it' --person decide a proposal your agents made, as yourself
wirk admin show account what your account holds (administrators)
wirk admin --request batch.json people, tokens, wirkspaces and fields (administrators)
Agents never need them, and the agent help, the skill and the MCP server do not mention them. The check is a speed bump against an agent being misled into acting as you, not a boundary: the service's rules are the boundary (nobody decides their own proposal, and agents are never administrators).
What leaves your machine
- The requests you or your agents make, and their content.
- The token, only as the bearer header to the address it was made for: never to another address, a redirect or a storage link, and never in output, logs or errors.
- With
status, the client's name and version, a session hash, the repository ashost/owner/name(or a hash when it has no plain remote) and the branch name. WIRK shows these as reported, never as authority. - File bytes you upload, straight to storage through short-lived links.
There is no telemetry. People keep a separate token of their own for their own decisions and administration; agents never use it.
Development
uv run --extra test python -m pytest tests -q runs the tests. The contract tests run against a scratch WIRK service when WIRK_TEST_URL and WIRK_TEST_ADMIN_TOKEN_FILE are set.
Releasing
A v* tag that matches the version in pyproject.toml runs the release workflow: tests, the wheel and the sdist, a GitHub Release with SHA256SUMS, and PyPI through trusted publishing. The PyPI step stays off until the wirk project on PyPI has this repository's release.yml and its pypi environment as a trusted publisher and the repository variable PYPI_PUBLISH is true. No token is stored anywhere.
License
Apache-2.0. See LICENSE.
Metadata
Release files for wirk 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| wirk-0.3.0.tar.gz | 54.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| wirk-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 80.6 kB
Release files / wirk-0.3.0.tar.gz
| Download URL | wirk-0.3.0.tar.gz |
|---|---|
| Size | 54.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
622ebb2520e10ad8b66c121a5873e3c4566ea40167baf2bd3a792ffcab17f0d7
|
|
BLAKE2b-256 checksum How to use checksums |
5397c5ef7a3139a9b006e589ff348acf6f5dd0f677463d092133d6f07decc469
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 2, 2026.
Transparency logRelease files / wirk-0.3.0-py3-none-any.whl
| Download URL | wirk-0.3.0-py3-none-any.whl |
|---|---|
| Size | 26.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9493956a7badf621f0c9f0d50d0e325fdd115a9f923d5845e1b4bc26a9641502
|
|
BLAKE2b-256 checksum How to use checksums |
115dd578aa4d1c1cd833fdef2cb324a8e66001a9d8a144dc8b55a1a520fa32ab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 2, 2026.
Transparency log