A local-first, AI-native operating system that lets one person sell, deliver, and run a business from the terminal.
git clone https://github.com/your-org/pipeline-cli.git
cd pipeline-cli
npm install
npm run build
pipeline init# Add a contact and a deal
pipeline contact:add "Jane Smith" --email jane@acme.com --org "Acme Corp"
pipeline deal:add "Acme Consulting" --contact jane --value 15000 --stage proposal
# Ask the agent who needs a follow-up
pipeline agent "who should I follow up with this week?"
# Review and approve the agent's proposed actions
pipeline approve# Explore the relationship graph
pipeline related jane
# Check your pipeline at a glance
pipeline status
pipeline timeline --days 30# Close a deal and start delivery
pipeline deal:close acme --won --create-project
pipeline milestone:add "Deliver v1" --project acme --due 2026-04-01
pipeline project:show acme| Topic | Commands | Description |
|---|---|---|
| contact | add list show edit rm tag note |
Manage contacts (people + org + CRM metadata) |
| deal | add list move close note pipeline |
Track deals through stages (close --create-project) |
| org | list show edit contacts |
Organizations and their members |
| task | add list done |
To-dos attached to contacts or deals |
| log | call email meeting list |
Record interactions |
send inbox thread sync |
Send and receive email (via Composio Gmail) | |
| agent | (free-form prompt) | Chat with the AI assistant |
| agent | enrich follow-up digest qualify |
Built-in agent workflows |
| schedule | add list remove run install uninstall |
Automated agent runs via cron |
| project | add list show move close |
Delivery projects linked to won deals |
| milestone | add list done |
Milestones within projects |
| field | get set rm |
Custom fields on any entity |
| config | get set |
Read/write configuration |
| top-level | init status search timeline related link unlink import export approve dashboard |
Setup, search, graph, data exchange, approvals |
Every command supports --json for scripted output and --help for details.
Pipeline ships with nine built-in agents:
| Agent | What it does |
|---|---|
agent:enrich |
Research a contact and update their records |
agent:follow-up |
Find stale contacts and propose follow-up emails |
agent:digest |
Morning pipeline briefing and daily summary |
agent:qualify |
Assess deal health and suggest next actions |
agent:inbox |
Review inbox and propose replies to incoming emails |
agent:deal-manager |
Review all active deals for staleness and propose actions |
agent:meeting-prep |
Prepare a briefing for an upcoming meeting with a contact |
agent:task-automator |
Ensure every active deal has appropriate tasks |
agent:delivery-check |
Review active projects for delivery health and propose actions |
Run any agent with a free-form prompt:
pipeline agent "draft an intro email to Sarah about our consulting services"Agents never act directly. Every mutation (send email, update stage, create task, log note, create relationship edge) is inserted into a pending_actions queue. You review and approve them:
pipeline approve # interactive review
pipeline approve --all # approve everythingSet ANTHROPIC_API_KEY in your environment to use agents.
Automate agents on a recurring schedule:
pipeline schedule:add follow-up --cron "0 9 * * 1-5" # weekdays at 9am
pipeline schedule:list
pipeline schedule:remove <id>
# Install/uninstall the cron job that runs due schedules
pipeline schedule:install
pipeline schedule:uninstallschedule:run executes all due schedules and is called automatically by the installed cron job.
Two-level TOML config with deep merge:
| File | Scope |
|---|---|
~/.pipeline/config.toml |
Global (user-wide) |
./.pipeline/config.toml |
Project-local (overrides global) |
Key settings:
[pipeline]
stages = ["lead", "qualified", "proposal", "negotiation", "closed_won", "closed_lost"]
currency = "USD"
[agent]
model = "claude-sonnet-4-6"
auto_approve = false
[email]
provider = "composio"
from = ""
[delivery]
stages = ["kickoff", "in_progress", "review", "complete"]
[integrations]
composio_api_key = "your-composio-api-key"
enabled = trueRead and write config from the CLI:
pipeline config:get agent.model
pipeline config:set email.from "you@yourdomain.com"Pipeline exposes its service layer as an MCP server over stdio, so any MCP-compatible client (IDEs, other agents) can interact with your Pipeline data.
node bin/mcp.js --db ~/.pipeline/pipeline.dbnpm run build # compile TypeScript (required before running)
npm run dev # watch mode
npm test # run all integration tests (vitest)
npm run lint # check with Biome
npm run format # auto-fix with BiomeArchitecture, conventions, testing strategy, and schema details are documented in CLAUDE.md.
MIT