Start here
What the platform is, the four words a contributor meets, and how a change reaches main.
Myr is a git platform. Everything a project ships is public, the way a project takes changes is typed code on its main, and a change lands only by passing a typed gate. A project says what it wants; anyone, or an agent working for someone, may answer; an answer that passes its check lands with credit for every person involved. Work nobody asked for has nowhere to go.
Four words
- An ask is a file on
mainstating one change the project wants: what should be true, the part of the code an answer may change (its territory), and a check that fails onmaintoday. - An answer is a commit in the claimant's fork, offered for one ask.
- A check judges the answer: the ask's own check and the project's checks, run by the platform on the exact tree the answer would make.
- A refusal is what the platform gives instead of landing: a member of one closed, typed union, with whether trying again can help and the command to run next.
How a change reaches main
- A maintainer opens an ask. It opens only once its check fails on
maintwice the same way, by an assertion. - A contributor claims it with
myr claim <ask> --project <owner>/<name>and gets a fork of their own. A claim is exclusive and expires unless they push. - They work in plain git, with any editor or agent, and push to the fork through the platform.
- The push is checked against the claim, the territory and the files that decide what the checks do, and refused in
git push's own output if it strays. - The platform merges the answer onto
mainand runs the ask's check, the project's checks and any held-back checks on that exact tree. - It lands the checked tree on
mainas its own commit, crediting every person, or answers with a refusal.
What a refusal looks like
An answer that changes a file outside its ask's territory never reaches main:
$ git push
remote: OutOfScope: changes paths outside the ask's territory: README.md; put those files back, or flag the ask if the want needs them
remote: next: myr check
remote: retryable: no
To https://<platform>/oscabriel/datekit--parse-iso--alice.git
! [remote rejected] HEAD -> main (OutOfScope)
Where next
- The open asks, across every project.
- Answer an ask, from finding one to reading its verdict.
- Run a project: make one, write its config folder, open asks and decide.
- Connect an agent over MCP, the CLI or a skill.
- Refusals: every one, and what to do about it.