Jobs that find you — based on what you're building.
Sign in with GitHub for an instant verified profile and rich matches from day one. Or stay fully local — no account required. Your profile never leaves your device unless you explicitly share a lead.
scope: read:user · public repos only · never private repos
Instant rich profile
Your top languages, repo topics, and PR activity become normalized skill tags automatically — no manual profile setup.
Verified identity
GitHub-verified login strengthens lead quality and anti-fraud signals. Recruiters see a confirmed dev identity, not an anonymous upload.
Great matches day one
Without GitHub you start with an empty profile. With it, you get seniority inference, tag population, and top-language signals — immediately.
Three steps. Nothing sent you didn't approve.
The broad pool lives on the server. Matching lives on your machine. Data sharing requires your explicit per-opportunity yes.
Sign in with GitHub (recommended)
Connect your public GitHub profile — we read only your public repos and languages (scope: read:user, never private repos). Instant verified profile: skill tags, seniority signal, top languages. Great matches on the first run. Skippable — see step 03.
Match runs on your machine
Run terminalhire jobs. The CLI downloads a compact job index from our server — public data from Greenhouse, Ashby, Himalayas, WWR, and HN. Matching runs entirely on your hardware against your local profile. Our server never sees your stack, your tags, or your identity.
Apply direct or share a named lead
Most roles open the employer's public URL — no data sent, ever. For Coastal-repped roles, terminalhire shows: "Share with Coastal Recruiting LLC? yes/no". Your decision, per opportunity. Prefer no account? Run terminalhire jobs locally without signing in — you just start with an empty profile instead of a pre-populated one.
It gets sharper the more you code.
No résumé to maintain. Your profile is a living reflection of what you actually build — it learns from the projects you're in, on your machine, and never leaves it unless you say so.
Reads the project, not your code
Each session, terminalhire reads the shape of where you are — dependencies, frameworks, languages, file types — and maps it through a closed skill vocabulary. Raw code, file paths, and project names are never used.
Weighted by what you build now
Every tag tracks frequency and recency. What you ship this month outranks what you touched a year ago (30-day half-life), so your matches follow your real, current focus — not a stale résumé.
Deepens locally, every session
Signals accumulate in your encrypted local profile across every project you open. Employer repositories are excluded by default. Nothing is uploaded unless you explicitly opt in.
Your code stays yours. Structurally.
Privacy isn't a policy checkbox. It's enforced by the architecture — matching is local, GitHub scope is read-only public, consent is named and per-opportunity, and the only thing that crosses the wire to a buyer is a narrow approved payload you explicitly created.
Public GitHub only — never private repos
We request only the "read:user" OAuth scope. We read your public repos, languages, and topics. Private repositories, org membership, and commit history are structurally inaccessible. This is enforced at the OAuth app registration level — we cannot request what we did not register.
We never see your code
Matching runs in a local subprocess. The index is public job data. Your profile is encrypted at rest and never uploaded. Source code structurally cannot reach our servers.
Broad pool, matched locally
Greenhouse, Ashby, Himalayas, WWR, HN Algolia — all aggregated server-side into a compact index. The client downloads that index and matches against your local profile. Zero matching egress.
Named-entity consent, not categories
We never ask "share with recruiters?". Every lead action names the specific buyer: "Share with Coastal Recruiting LLC?". You approve that named entity, per opportunity, explicitly.
Built for engineers who don't job hunt.
Default mode shares nothing. The index is public data. Matching is local. Zero trust required to get value. Skip GitHub entirely if you prefer.
You're not job hunting — but if the right role appeared in your terminal based on what you actually built this week, you'd look.
Your stack is your signal. Sign in with GitHub and your repos become your profile — languages, topics, PR activity all normalized to closed-vocab skill tags.
You want to be found on your terms. Public GitHub only. No private repos. No recruiter spam, no profile on job boards — just a broad pool matched locally, with you controlling every lead.
Your next role is already in your terminal.
Sign in with GitHub for an instant verified profile, or install the CLI and stay fully local. Your choice.