Apply to jobs from your terminal. AI-generated resumes, cover letters, and form submissions — fully automated.
Quick Start · Usage · Platforms · Configuration · Development
- Bun runtime —
curl -fsSL https://bun.sh/install | bash
curl -fsL https://autoply.khrees.com/install | bashThen set up your profile:
autoply initInstall from source
git clone https://github.com/khrees2412/autoply.git
cd autoply
bun install
bun run build
mv dist/autoply /usr/local/bin/autoply apply https://boards.greenhouse.io/company/jobs/123456Autoply scrapes the posting, generates a tailored resume and cover letter, fills out the application form, and submits it. By default, Autoply will pause and ask for your confirmation before final submission.
Auto-Submit Mode: To skip the confirmation prompt and have Autoply submit automatically when confident:
autoply apply --auto https://boards.greenhouse.io/company/jobs/123456(You can also set application.autoSubmit to true in your config to always use this behavior).
# Pass multiple URLs
autoply apply https://job1.com https://job2.com https://job3.com
# Or read from a file (one URL per line)
autoply apply -f jobs.txtGenerate documents without submitting:
autoply apply -d https://boards.greenhouse.io/company/jobs/123456autoply generate resume https://boards.greenhouse.io/company/jobs/123456
autoply generate cover-letter https://boards.greenhouse.io/company/jobs/123456
autoply generate both https://boards.greenhouse.io/company/jobs/123456 -d ./outputautoply history # All applications
autoply history -s submitted # Filter by status
autoply history -c "Anthropic" # Search by companyautoply profile show
autoply profile edit
autoply profile deleteFor platforms that require login (e.g. LinkedIn):
autoply login linkedinA browser window opens — log in manually, and the session is saved for future use.
| Platform | URL Pattern |
|---|---|
| Greenhouse | boards.greenhouse.io/* |
linkedin.com/jobs/* |
|
| Lever | jobs.lever.co/* |
| Workday | *.myworkdayjobs.com/* |
| Ashby | jobs.ashbyhq.com/* |
| Jobvite | jobs.jobvite.com/* |
| SmartRecruiters | jobs.smartrecruiters.com/* |
| Pinpoint | *.pinpointhq.com/* |
| Teamtailor | *.teamtailor.com/* |
| Workable | apply.workable.com/* |
| BambooHR | *.bamboohr.com/careers/* |
Autoply includes a browser extension that provides autofill assistance directly on job application pages. No web store required.
-
Build the extension:
bun run extension:build
-
Open
chrome://extensions/ -
Enable Developer mode (toggle in top right)
-
Click Load unpacked and select
dist/extension/chrome -
Pin the extension for easy access (click the puzzle piece icon → pin)
-
Build the extension:
bun run extension:build:firefox
-
Open
about:debugging#/runtime/this-firefox -
Click Load Temporary Add-on...
-
Select
dist/extension/firefox/manifest.json
Note: Firefox temporary add-ons are removed when you close Firefox. For permanent installation, you need to sign the extension at Firefox Add-ons.
-
Start the Autoply API server:
bun run api
The API server runs on port 8088 by default.
-
Navigate to any supported job application page
-
Click the Autoply extension icon
-
The extension will:
- Detect form fields on the page
- Pull your profile data from the API
- Fill in available fields automatically
The extension communicates with the Autoply API server. By default, it connects to http://localhost:8088.
To change the server URL, edit src/extension/sidepanel.tsx and modify the API_BASE constant, then rebuild the extension.
Autoply uses an AI provider to generate resumes and cover letters. Set one up before applying.
Cloud providers:
# Anthropic
autoply config set ai.provider anthropic
autoply config set ai.model claude-sonnet-4-5-20250929
# OpenAI
autoply config set ai.provider openai
autoply config set ai.model gpt-5.2
# Google
autoply config set ai.provider google
autoply config set ai.model gemini-pro-3Set your API key as an environment variable — add to your .env or shell profile:
ANTHROPIC_API_KEY=sk-ant-...
OPENAI_API_KEY=sk-...
GOOGLE_API_KEY=AIza...Local providers (no API key needed):
# Ollama (default)
autoply config set ai.provider ollama
autoply config set ai.model llama3.2
# LM Studio
autoply config set ai.provider lmstudioVerify your setup:
autoply config testautoply config list # Show all settings
autoply config set <key> <value> # Set a value
autoply config get <key> # Get a value
autoply config reset # Reset to defaults
autoply config providers # List AI providers| Key | Default | Description |
|---|---|---|
ai.provider |
ollama |
AI provider |
ai.model |
varies | Model name |
ai.baseUrl |
varies | API base URL (local providers) |
ai.temperature |
0.7 |
Generation temperature |
browser.engine |
playwright |
Default browser engine |
browser.headless |
false |
Run browser without UI |
browser.timeout |
30000 |
Browser timeout (ms) |
browser.reuseSessions |
true |
Reuse browser processes across jobs |
browser.maxOpenPagesPerBrowser |
2 |
Max concurrent pages per browser process |
browser.retireBrowserAfterPageCount |
25 |
Rotate a browser process after this many pages |
browser.closeInactiveBrowserAfterMillis |
30000 |
Close idle pooled browsers after this delay |
browser.patchrightHosts |
[] |
Hosts that should use Patchright instead of Playwright |
browser.patchrightPlatforms |
[] |
Platforms that should use Patchright instead of Playwright |
application.autoSubmit |
false |
Auto-submit after form fill |
application.fillOptionalFields |
false |
Fill optional fields and questions instead of leaving them blank |
application.saveScreenshots |
true |
Save screenshots on submission |
application.retryAttempts |
3 |
Retry count for failed operations |
application.rateLimitDelay |
0 |
Delay in seconds between bulk applications |
Example targeted stealth setup:
autoply config set browser.patchrightHosts '["hypr.com"]'
autoply config set browser.patchrightPlatforms '["linkedin"]'Autoply supports debugging flags to help identify issues during form submission. Set these as environment variables:
DEBUG=1(ortrue) — Enables comprehensive debugging output.DEBUG_GREENHOUSE=1— Specifically enables pre-submission debugging for Greenhouse forms (logs unfilled fields to the console and saves a snapshot).
All data is stored locally in ~/.autoply/:
~/.autoply/
├── autoply.db # SQLite database
├── config.json # App configuration
├── browser-state.json # Saved browser session
├── documents/ # Generated resumes and cover letters
└── screenshots/ # Submission screenshots
bun install
bun run dev # Run CLI in dev mode
bun test # Run tests
bun run build # Build for current platform
bun run build:all # Build for all platformsbun run build:mac # macOS ARM (Apple Silicon)
bun run build:mac-intel # macOS Intel
bun run build:linux # Linux x64
bun run build:windows # Windows x64MIT