Autonomous development automation with Claude Code and Linear
Project description
Claudear
Autonomous development automation with Claude Code and Linear.
Move a Linear issue from Backlog to "Todo" and Claudear takes over — it creates an isolated git worktree, runs Claude Code to implement the work, posts progress updates, and opens a PR when done. Move to "Done" and the PR auto-merges.
Installation
Option 1: pip (Recommended)
pip install claudear
Option 2: From Source
git clone https://github.com/ianborders/claudear.git
cd claudear
pip install -e .
Quick Start
-
Create your config file at
~/.config/claudear/.env(see Configuration below) -
Start watching for tasks:
claudear
How It Works
- Move issue from Backlog → Todo — Claudear picks it up
- Automatic implementation — Creates isolated git worktree, runs Claude Code
- Progress updates — Comments on Linear as it works
- Blocked? — Posts a comment asking for help, waits for your reply
- Complete — Pushes code, creates PR, moves to "In Review"
- Move to "Done" — PR auto-merges, worktree cleaned up
Prerequisites
- Python 3.9+
- Claude Code CLI installed and authenticated
- ngrok account (free tier works)
- GitHub CLI (
gh) installed and authenticated - Linear workspace with API access
- Linear workflow with these states: Backlog → Todo → In Progress → In Review → Done
Configuration
Create a .env file:
# Linear
LINEAR_API_KEY=lin_api_xxx # Settings → API → Personal API keys
LINEAR_WEBHOOK_SECRET=whsec_xxx # Created when you register the webhook
LINEAR_TEAM_ID=KYB # Your team key from URL (linear.app/KYB/...)
# Required Linear workflow states (must match exactly)
LINEAR_STATE_TODO=Todo
LINEAR_STATE_IN_PROGRESS=In Progress
LINEAR_STATE_IN_REVIEW=In Review
LINEAR_STATE_DONE=Done
# Note: Your Linear board must have: Backlog → Todo → In Progress → In Review → Done
# GitHub
GITHUB_TOKEN=ghp_xxx # Settings → Developer settings → Tokens
# Repository
REPO_PATH=/path/to/your/repo # The repo Claudear will work on
# Server
WEBHOOK_PORT=8000
# ngrok
NGROK_AUTHTOKEN=xxx # dashboard.ngrok.com → Your Authtoken
Setup
1. Create a static ngrok domain
You need a persistent URL so the Linear webhook survives restarts.
- Go to ngrok Domains
- Create a free static domain (e.g.,
your-name.ngrok-free.app) - Create
~/Library/Application Support/ngrok/ngrok.yml:
authtoken: your_auth_token
tunnels:
claudear:
addr: 8000
proto: http
domain: your-name.ngrok-free.app
2. Disable Linear's GitHub automations
Linear has built-in automations that conflict with Claudear. You must disable them:
- Linear → Settings → Team Settings → Workflow → GitHub
- Set all "Automate state changes" options to No action
- "When a branch is created" → No action
- "When a PR is opened" → No action
- "When a PR is merged" → No action
- etc.
If you skip this, Linear will fight Claudear for control of issue states.
3. Register Linear webhook
- Linear → Settings → API → Webhooks → Create webhook
- Configure:
- URL:
https://your-name.ngrok-free.app/webhooks/linear - Events: Issues, Comments
- URL:
- Copy the signing secret to
.envasLINEAR_WEBHOOK_SECRET
4. Run
claudear
Claudear starts the webhook server and connects ngrok automatically.
Usage
| Action | Result |
|---|---|
| Move issue Backlog → Todo | Claudear starts working |
| Claude gets stuck | Posts comment, waits for your reply |
| Reply to comment | Claudear resumes |
| Task complete | PR created, issue → "In Review" |
| Move issue → Done | PR merges, worktree cleaned up |
Troubleshooting
Webhook not receiving events
- Verify webhook URL matches your ngrok domain
- Check signing secret matches
LINEAR_WEBHOOK_SECRET - Test:
curl https://your-domain.ngrok-free.app/health
Claude not starting
- Run
claudemanually to verify CLI is installed and authenticated - Check
REPO_PATHexists and is a git repository
Tasks stuck in "Blocked"
- Check Linear for Claude's comment asking for help
- Reply to unblock (polls every 30 seconds)
Port 8000 in use
- Kill existing processes:
lsof -ti:8000 | xargs kill -9 - Kill ngrok:
pkill ngrok
How It Uses Claude Code
Claudear runs Claude Code CLI in headless mode using your Claude Code subscription (not API credits). It's the same Claude you use interactively, just automated.
License
MIT
Project details
Release history Release notifications | RSS feed
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 claudear-0.1.1.tar.gz.
File metadata
- Download URL: claudear-0.1.1.tar.gz
- Upload date:
- Size: 281.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
937e32e72b6dd5b7b1786d3584b4fb214a0b6b3cef5124288213498df9e42cf1
|
|
| MD5 |
f8f273d46c32c7ba8c29d1c0913974bb
|
|
| BLAKE2b-256 |
8a7afe0013b414d6cd07f31da2dc0b84905e2da399b65aff9871df774ae372df
|
File details
Details for the file claudear-0.1.1-py3-none-any.whl.
File metadata
- Download URL: claudear-0.1.1-py3-none-any.whl
- Upload date:
- Size: 44.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
41a7d850b7f8897d6a135b3c94aad6125448db1e585545b5c74e419b1c8a51e3
|
|
| MD5 |
1cd07637c0a4ae00f45d452c9bd1252c
|
|
| BLAKE2b-256 |
3048d650f0d58a323830a23ec7346a02784cb3208f69d706f5ce6c51a2d6785f
|