Get paid to work on open source.
coss.work is a free job board for engineering roles at commercial open-source (COSS) companies. Search by the stack you want to work with, compare companies and apply on their own site.
- Only companies whose core product is open source are listed.
- Each company is one JSON file in this repo, in
app/data/companies/. - Companies add and update their listings by pull request. A validator checks each change.
- It is free for job hunters, and it is free for companies to post.
- Copy
app/data/SAMPLE_COMPANY_TEMPLATE.jsontoapp/data/companies/<first letter>/<slug>.json. The slug can use only lowercase letters, digits and dashes. - Fill in your company and your open roles. Keep the
"$schema"line so that your editor can autocomplete the fields. Its path is already correct for the folder you copied the file into. - Set
updatedto the current time in ISO 8601 format, for example2026-09-19T12:00:00.000Z. Listings show newest first. - Optional: run
bun run validate:companiesto check the file locally. - Open a pull request. The Validate companies check marks errors on the matching lines under "Files changed".
To update or remove a listing, click edit on your company page, or change or delete the file in a pull request.
All fields are required unless marked optional.
| Field | Value |
|---|---|
name |
Company name |
url |
Company website |
at |
Short label, for example "jobs" |
building |
What the company is building, in 5 words or fewer |
products |
List of { "name", "url" } |
socials |
Profile URLs, for example https://github.com/<org> |
offices |
Ids from locations.json, plus "remote" |
headcount |
Optional. Whole number |
founded |
Optional. Year |
jobs |
At least one job (see below) |
updated |
ISO 8601 timestamp of the last edit |
| Field | Value |
|---|---|
position |
Id from positions.json |
category |
frontend, backend, full-stack, mobile, devops, data, security, systems |
level |
any, junior, senior, staff |
type |
full-time, part-time, contract, freelance |
tech |
Ids from tech.json |
url |
Where to apply |
salary |
Optional. { "amount": [min, max], "range": "yearly", "currency": "usd" } |
equity |
Optional. [min, max] in percent |
range can be yearly, monthly or hourly. currency can be usd, eur, gbp, cad, aud, chf or inr. company.schema.json has the full rules.
Yes. Job hunters never pay, and posting a listing is always free.
Companies whose core product is open source.
No. Leave salary and equity out if they are not public.
By updated, newest first.
Not yet. Email alerts by tech stack are planned.
Open a pull request with the fix, or open an issue.
Add it to tech.json, positions.json or locations.json in the same pull request.
Yes. See Attribution.
The listing data in app/data/ is free to use. If you use it, credit coss.work by name and link:
Data from [coss.work](https://coss.work)Built with Remix 3, Vite+ and Cloudflare Workers. Uses bun 1.4.2 and Node 24.3 or later.
bun i
bun run dev # start the dev server
bun run build
bun run preview
bun run test
bun run typecheck
bun run check # format, lint and type check
bun run validate:companies # check the company filesSee AGENTS.md for the code layout.
Cloudflare Workers Builds deploys every push to main. A failed build does not deploy. Set it up once in the Cloudflare dashboard:
- Go to Workers & Pages, open the
coss-workWorker, then Settings → Builds → Connect. If the Worker does not exist yet, use Create → Import a repository and name itcoss-work. The Worker name must matchnameinwrangler.jsonc. - Pick the
aureliushq/coss.workrepository and themainbranch. - Set Build command to
bun run build. Keep the default Deploy command,npx wrangler deploy. - Under Build variables, add
BUN_VERSION=1.4.2to matchdevEnginesinpackage.json. - Keep Builds for non-production branches on. Other branches run
npx wrangler versions upload, which uploads a preview version without touching production, and Cloudflare posts the preview URL on the pull request.