Docs

Improve the merging and verification for your agents

Your agent pushes a branch to GitHub. land merges the change with main by structure, reruns only the tests the change could have affected, and moves main only if every required test passes. The answer comes back as a status on the commit, and your code stays on GitHub.

Get started
curl -fsSL https://useland.dev/install.sh | sh
land login

land login opens your dashboard with a code. Check it matches and click Approve, once per machine; you never paste a key. On a machine that is already connected it just says so. New here? Sign up first, it takes a minute. After that, land dashboard opens your dashboard already signed in.

How it works

Every test land has run is stored with the list of functions it actually read. When a new change arrives, land looks up each test. If none of the functions it read were touched, the stored result still holds and the test is vouched without running. The rest rerun in a sandbox.

On t3code a typical TypeScript edit reruns 19 tests instead of 798, and on sqlglot a typical Python edit reruns 52 of 1,286. Across 118,000 lookup checks on generated scenarios, no vouched test turned out to be failing.

Connect Claude Code

land works on your GitHub repository. Your agents push branches as usual; land checks each one and puts the ones that pass on main. Nobody on your team creates an account.

Subscribe

Check out with a card. We then email you to ask which GitHub repository to connect, and record its test suite once.

Reruns only the affected tests for Python (pytest), TypeScript (vitest), Go (go test) and Rust (cargo test). Any other language or runner, such as Java, Ruby or jest, works in full-suite mode: the same merge and the same guarded main, running your whole test command on each push.

Give land access to the repository

Create a fine-grained GitHub token for that one repository with Contents and Commit statuses set to read and write, and send it to us. land uses it to read your agents' branches, move main and post its verdict. A GitHub App you can install in one click is coming.

Protect main

In the repository's settings, add a branch rule for main that requires the status check land. Then land is the only way changes reach main.

Connect your agent to your account

Install the land command and log in. It opens your dashboard with a code; check it matches and click Approve. That one click is the only step, once per machine, and it is what stops another computer from joining your account. If your browser is not signed in yet, run land dashboard on a machine that is already connected, or sign in with the key you got at checkout.

After that your agent sees what landed and how much time it saved with land status, and land dashboard opens your dashboard already signed in, through a link that works once.

curl -fsSL https://useland.dev/install.sh | sh
land login
land status
land dashboard

Install the land skill

The skill teaches Claude to push in the background and keep working, keep each change small so few tests rerun, act on each kind of refusal, and keep a push log so every session ships faster than the last. Commit it to the repository so every session and every teammate gets it.

mkdir -p .claude/skills/land
cp SKILL.md .claude/skills/land/SKILL.md
git add .claude/skills/land && git commit -m "Add the land skill"

Tell Claude where finished work goes

Add these lines to the repository's CLAUDE.md, with a name for the agent in place of rohan.

Ship finished work with `git push origin +HEAD:land/rohan`, then keep working.
land checks it and posts the commit status `land`: success means it is on main, failure names the failing tests.
Read it with `gh api repos/OWNER/REPO/commits/$(git rev-parse HEAD)/status`. Fix a failure and push again.
Never edit, skip or delete a test to get a push through.

Ask Claude to ship something

Start a session and give Claude a task. When it finishes, it pushes its branch and moves on while land checks it. A few seconds later the status appears on the commit, and main only ever moves to code whose required tests pass. A commit someone pushes to main directly is picked up and kept, never overwritten.

Reading a verdict

$ git push origin +HEAD:land/rohan
# a few seconds later, on that commit:
land  success  LANDED · 188 tests: 186 vouched by lookup, 2 rerun and recorded
# main now contains it

$ git push origin +HEAD:land/rohan      # a broken change
land  failure  failing: test_frequencies, test_countby
# main unchanged
success · on mainfailure · the failing tests named
land sayswhat Claude does
weave could not mergeFetch main, rebase, resolve the named functions, push again
N tests newly failFix the code that the failing tests read, push again
N required tests no longer runFix the import or syntax error that stopped them
changes the owner's testsRevert those edits, since required tests belong to the owner
main moved during the checkPush again unchanged, and untouched tests stay vouched

Statuses as land posted them on our test repository (toolz), 8 November 2026.

Time saved

We ran 16 live coding agents on t3code through git with CI, and another 16 through land, on the same tasks.

Same race, t3codegit + CIland
Features landed11 of 1613 of 16
Hidden tests passing70 of 10384 of 103
Broken commits on main (idle audit)00
landbench, 320 trials: broken commits430
landbench, 320 trials: required tests deleted680

Each agent gets its answer about 13 minutes sooner per change. During the race, an extra audit on the overloaded agent box showed 5 land commits red. Four failed only a 2 second timeout test in code they did not touch and passed when the box was idle. The fifth lost its log and was green when idle.

Pricing

Two ways to pay, both billed only for changes land puts on main. Refused pushes are never counted, and developers never need an account.

Pay as you go
$0.10
per landed change, no monthly fee

For trying land on one repo, or a few agents. 50 landings cost $5.

Start · pay as you go
Monthly
$25
a month with 300 landed changes, then $25 per further 300

For a team whose agents land every day. Cheaper than pay as you go above 250 landings a month.

Subscribe · $25 a month
Pay as you go$0.00
Monthly$0.00
Best for you$0.00

Reruns only the affected tests for Python (pytest), TypeScript (vitest), Go (go test) and Rust (cargo test). Any other language or runner, such as Java, Ruby or jest, works in full-suite mode: the same merge and the same guarded main, running your whole test command on each push.

See your landings, estimated bill and invoices any time on your dashboard. One person checks out for the team with a card. Landings are billed to the team monthly. To add a teammate or another machine, reply to our email with its SSH public key. You can switch plans at any time.

Current limits

  • Your code stays on GitHub, which remains the source of truth. While land checks a change it keeps a working copy of the repository on our server; it can be deleted at any time and refilled from GitHub.
  • Today you connect a repository with a fine-grained token. A one-click GitHub App is coming.
  • Subagent branches that land into their parent's branch work on a land-hosted remote, not yet through GitHub.
  • Per-test recording covers Python, TypeScript with vitest, Go and Rust. Other languages run their whole suite on every push until they get a recorder, so they get the safety without the speedup. Full-suite mode needs a suite that passes before your first push.
  • On our head-to-head tasks mergiraf won 12 to 4 on speed and merged three shapes weave refuses. land was the only tool that refused every test-deleting push.