skip to content
terminalhire documentation

Getting started

TerminalHire matches developers to paid tasks and open-source issues, in the terminal. Developers claim a task, do it in their own editor with their own agents, and build a record of contributions other people accepted. Posters put up work against a repository they control and pay for what they accept.

Matching runs on your machine. Your matching profile does not leave it unless you send it, with sync --push.

This page is the short way in, for both sides.

Sign in on the web

Open the dashboard and sign in with GitHub to return to your workspace. The web dashboard requires a signed-in session, even if this browser has an old local profile. Signing out returns you to the sign-in screen. New posters can create an account.

Install

npm i -g terminalhire
terminalhire init

Or the one-liner, which pins the current release:

curl -fsSL https://terminalhire.com/install.sh | bash

init walks seven steps: GitHub sign-in, seeding the local job cache, a personal interest, the ambient spinner, connection counts in your statusline, the MCP server, and th:// claim links. You can decline six of them. Seeding the cache is the exception — it downloads the job index anonymously and does not ask.

th is a short alias for terminalhire everywhere.

Find work

Command What it does
terminalhire work [--priced] First-party paid tasks; --priced adds scraped paid open-source supply
terminalhire bounties [--priced] Same as work
terminalhire contribute Open-source issues ranked by winnability, on unless you opt out
terminalhire jobs Roles, scored on your machine
terminalhire refresh Pull the current index and match again
terminalhire inbox Connection chats and intro requests

Do a paid task

Four commands, in order. claim start gives you the whole repository at the commit the posting names.

terminalhire claim preview <taskId|issueUrl>   # read it; claims nothing
terminalhire claim record <taskId|issueUrl>    # record the claim
terminalhire claim start <id>                    # clone, branch, ready to work
terminalhire run                                 # verify your diff in a container
terminalhire claim submit                        # push the branch, open the PR

claim submit is the only step that pushes anything.

run needs Docker running, and the network for its first clone. It answers with its exit code: 0 the tests were green, 1 we judged the work and it is not green, 2 we rendered no verdict — our environment could not run it, so nothing was said about your work.

terminalhire link connects the terminal to your account. Commands that speak for you — claim note, claim resolve, connect, hub, decline — ask for it first.

Paid postings are limited to approved developers while the beta runs. Claiming one without approval answers paid-work-not-approved and changes nothing; open-source work stays open to everyone. terminalhire beta joins the invite-only beta or its waitlist.

Post a paid task

Start at terminalhire.com/poster/start. A posting names a repository you control and the change you want. Publishing asks for three things, and says which is missing:

  1. the TerminalHire Poster GitHub App covering that repository,
  2. a saved card,
  3. a confirmed contact email.

A claimant gets the whole repository at the commit you posted. You read the patch they submit, and you accept or ask for changes.

From an agent, terminalhire mcp --print-config also wires a poster MCP server with 13 tools: drafting, reading your postings and claims, publishing a draft you reviewed, editing, withdrawing, and asking for changes. Four of them — publish, edit, withdraw, ask for changes — need a connector you gave permission to act.

No tool and no command moves money. Accepting finished work, releasing funds and refunds happen in the browser, signed in as you, or automatically on a posting that accepts work after a missed deadline. The route that records a verdict refuses anything but a browser session.

Where it shows up while you work

  • Claude Code: spinner verbs, and a statusline carrying counts — unread chats, intro requests, approved claims, notes from a poster, open paid postings. Job matches and scores never appear there.
  • VS Code, Cursor, Windsurf: a quiet status bar item with the same counts and a hover card of your top matches.
  • Any MCP editor: terminalhire mcp --print-config emits config for VS Code, Cursor, OpenAI Codex CLI, Gemini CLI and Claude Code. See MCP.

Connect, don't broadcast

Matching with other developers and posters is double opt-in: nobody sees you until you consent, an intro needs a typed yes from both sides, and chat is end-to-end encrypted — the server stores ciphertext it cannot read. Details in Privacy architecture.