HiringCafe CLI
Give your AI agent Hiring Cafe superpowers: search jobs, inspect postings, and keep your Hiring Cafe saved-job board in sync without a browser.
hiringcafe search "python developer" --pages 3 --jsonl
The result is stable JSON/JSONL, explicit exit codes, cached anonymous reads, bounded retries, and authenticated actions against your real Hiring Cafe account.
Unofficial client. This project is not affiliated with, endorsed by, or supported by Hiring Cafe. Use your own account, respect the service, and expect upstream APIs to change.
For agents
Agents can install and verify the CLI in three commands:
uv tool install hiringcafe-cli
hiringcafe search "python developer" --page 0 --json
For persistent installations, use uv tool install hiringcafe-cli or pipx install hiringcafe-cli.
Feed the output directly to your tooling:
# One JSON object per page
hiringcafe search "python developer" --pages 3 --jsonl
# One line per job
hiringcafe search "python developer" --pages 3 --json | jq -c '.jobs[]'
# Machine-readable result count
hiringcafe count "python developer" --json
Import an existing Firebase refresh token without an interactive password prompt:
printf '%s\n' "$HIRINGCAFE_REFRESH_TOKEN" | hiringcafe auth import
hiringcafe saved-jobs list --json
Safe automation contract:
- JSON success output goes to stdout; cache diagnostics go to stderr.
- Stable exit codes describe transport, input, rate-limit, auth, and conflict outcomes.
- Passwords and Firebase ID tokens are never written to disk.
- Authenticated mutations are never retried or cached.
- Anonymous search/count responses use a 15-minute cache; job details use 24 hours.
For humans
hiringcafe auth login --email you@example.com
hiringcafe search "python developer" --page 0 --json
hiringcafe job show <objectID> --json
hiringcafe saved-jobs list --json
hiringcafe auth logout
The password is read through hidden input, exchanged once, and discarded.
Saved jobs
These commands modify your real Hiring Cafe account. Review object IDs and confirmation prompts before changing data.
hiringcafe saved-jobs save <objectID> --stage saved
hiringcafe saved-jobs stage <objectID> --stage interviewing
hiringcafe saved-jobs remove <objectID> --yes
Valid stages are saved, applied, interviewing, offer, rejected, ghosted, and hidden.
Local data
| Data | Location | Notes |
|---|---|---|
| Refresh token | ~/.config/hiringcafe-cli/session.json |
owner-only file; removed by logout |
| Anonymous cache | ~/.cache/hiringcafe-cli/cache/v1/ |
public search/job data only |
Set HIRINGCAFE_CONFIG_HOME or HIRINGCAFE_CACHE_HOME to use different roots.
hiringcafe search "python developer" --no-cache
hiringcafe search "python developer" --cache-ttl 3600
hiringcafe cache purge
Exit codes
| Code | Agent action |
|---|---|
0 |
success |
1 |
transport, HTTP, parsing, or API error; inspect stderr |
2 |
invalid arguments or search state; fix the request |
3 |
rate limited; wait and retry |
4 |
no stored credential; authenticate first |
5 |
stored credential rejected; re-authenticate |
6 |
write conflict or prerequisite missing; refresh state |
Development
Requires Python 3.11+ and uv.
uv sync
uv run pytest
uv run hiringcafe --help
uv run pre-commit run --all-files
Normal tests do not access the network. The verified anonymous endpoint probe is opt-in:
LIVE=1 uv run hiringcafe probe
Every implementation change traces to specs/pr-*/spec.md and the roadmap. Never commit credentials, Firebase tokens, cookies, real UIDs, emails, or private account data.
Beta status: search, job details, authentication, and saved-job workflows are implemented. Browser OAuth login remains intentionally deferred. See roadmap.md and specs/.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hiringcafe_cli-0.1.5.tar.gz.
File metadata
- Download URL: hiringcafe_cli-0.1.5.tar.gz
- Upload date:
- Size: 18.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3dc1c710502b6f9246a1452fa23f626d1fe508c85e0af475d7cf2fc8170c74fc
|
|
| MD5 |
0969ffafac915a18f262b7ae8446ca05
|
|
| BLAKE2b-256 |
76ad2588ae1e4433e2baba468e8aa832fa062d2a724f2dd3b62d77a125907c56
|
Provenance
The following attestation bundles were made for hiringcafe_cli-0.1.5.tar.gz:
Publisher:
release.yml on chen-gdp/hiringcafe-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hiringcafe_cli-0.1.5.tar.gz -
Subject digest:
3dc1c710502b6f9246a1452fa23f626d1fe508c85e0af475d7cf2fc8170c74fc - Sigstore transparency entry: 2567714969
- Sigstore integration time:
-
Permalink:
chen-gdp/hiringcafe-cli@f78b8c0b441466c5c85e1f44e841ce01c6a3444a -
Branch / Tag:
refs/tags/v0.1.5 - Owner: https://github.com/chen-gdp
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@f78b8c0b441466c5c85e1f44e841ce01c6a3444a -
Trigger Event:
push
-
Statement type:
File details
Details for the file hiringcafe_cli-0.1.5-py3-none-any.whl.
File metadata
- Download URL: hiringcafe_cli-0.1.5-py3-none-any.whl
- Upload date:
- Size: 28.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f4e867151f6c20908d7655b0b274d89095d189fa7bd843945d51f966f0074eea
|
|
| MD5 |
9d7a9b1deea159601931257ceb832a72
|
|
| BLAKE2b-256 |
d112a4f000dc67693c1afc9a6c2cfadd2dc3e5994eb9284fd0bbd6abc77eb1f4
|
Provenance
The following attestation bundles were made for hiringcafe_cli-0.1.5-py3-none-any.whl:
Publisher:
release.yml on chen-gdp/hiringcafe-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hiringcafe_cli-0.1.5-py3-none-any.whl -
Subject digest:
f4e867151f6c20908d7655b0b274d89095d189fa7bd843945d51f966f0074eea - Sigstore transparency entry: 2567714990
- Sigstore integration time:
-
Permalink:
chen-gdp/hiringcafe-cli@f78b8c0b441466c5c85e1f44e841ce01c6a3444a -
Branch / Tag:
refs/tags/v0.1.5 - Owner: https://github.com/chen-gdp
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@f78b8c0b441466c5c85e1f44e841ce01c6a3444a -
Trigger Event:
push
-
Statement type: