Installing by hand
The manual install path. For people comfortable with a terminal — everyone else should use the Claude install.
Installing by hand
If you’d rather not deal with a terminal, see the install with Claude path instead — Claude will do every step on this page for you.
The agent runs locally on your machine. It does not require a server, a cloud account, or any subscription. The only thing it phones home for is the Anthropic API (to actually write the pitches).
Requirements
- Python 3.10 or newer
- A few hundred MB of disk space for the Chromium browser that Playwright bundles
- An Anthropic API key — sign up at
console.anthropic.com. New accounts get $5 of free credit, which is enough for several hundred pitches. - A Google account for sending emails (Gmail OAuth, set up below)
The agent runs on Mac, Linux, and Windows (via WSL). It has been tested on Ubuntu, macOS 14+, and Windows 11 + WSL2.
Install
# 1. Download cold-pitch-boss.zip from freelance.mikee.ai/download
# Unzip it somewhere — typically:
unzip ~/Downloads/cold-pitch-boss.zip -d ~/cold-pitch-boss
cd ~/cold-pitch-boss
# 2. Set up Python virtual environment
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 3. Install dependencies
pip install -r requirements.txt
# 4. Download the Chromium binary that Playwright uses
python -m playwright install chromium
# 5. Set your Anthropic API key
export ANTHROPIC_API_KEY=sk-ant-...
That’s the agent installed. Two more one-time setups before the first run:
Set up Gmail (one-time, ~10 min)
- Open
console.cloud.google.comand create a new project (free). - APIs & Services → Library → Gmail API → Enable.
- OAuth consent screen → External. Fill in app name, your email. Add yourself as a test user.
- Credentials → Create Credentials → OAuth client ID → Application type: Desktop app.
- Download the JSON file. Save it as
cold_pitch_agent/data/gmail/credentials.json(you’ll need to create thedata/gmail/folder). - On the agent’s first run, it will pop a browser window asking for consent. Approve it. A
token.jsonwill be saved next tocredentials.json.
If you ever need to revoke access, do it at myaccount.google.com/permissions.
Set up LinkedIn (one-time, ~2 min)
The agent’s human-like browser uses a persistent storage context. Log in to LinkedIn once and the session is saved.
# Run this one-off script, log in manually when the browser opens, press Enter to save:
python -c "
import asyncio
from cold_pitch_agent.tools.browser import open_context
async def main():
ctx, p = await open_context()
page = await ctx.new_page()
await page.goto('https://www.linkedin.com/login')
input('Log in in the browser, then press Enter to save the session...')
await ctx.close(); await p.stop()
asyncio.run(main())
"
That cookies file lives at cold_pitch_agent/data/browser_state/. You can do the same for any other site that requires a login.
Verify it works
# This should print the help text:
python -m cold_pitch_agent.agent --help
If you see the CLI help, the agent is installed. Move on to the Quickstart.