Open-source sales intelligence
openbower.ai | Quickstart | How it works | Changelog | Contributing
Tip
Don't want to run it yourself? A hosted version is on the way: join the waitlist at openbower.ai. Or run it on your own machine with one command, see Quickstart.
OpenBower is an open-source, self-hostable Clay alternative. Build agentic GTM workflows that turn raw signals into researched rows.
Key capabilities
- Signals in. Rows arrive by hand, by webhook, or from a CSV, and every arrival kicks off the necessary agents the moment it lands.
- An agent per detail. Build an agent once (a prompt, a model, the tools it may use) and reuse it on every sheet.
- Get notified. A Send column waits for the required work to finish, then notifies you or syncs completed rows to your CRM, sequencer, or automation over signed webhooks.
- Bring your own model. Any OpenAI or Anthropic compatible endpoint, including one on your laptop, so the whole pipeline runs for $0 while you prove your idea.
- Self-host free, or hosted. Run it on your own machine forever, or join the waitlist for the hosted version.
- Everything before hello, automated. A row lands, the agents research it, the finished row reaches your sequencer. The conversation is yours.
- Built for builders. Closed tools are built for venture-backed startups and organizations past product-market fit, so they price heavily to get started. If you can run code and have the compute, you should be able to run the tools yourself, at cost. That is what OpenBower is for: arming founders with tools they can run at cost while they find fit, and offering a managed version to graduate to when it is time to scale.
- Orchestration is not inference. Platforms resell vendor models at a markup. Here the coordination runs on your compute and the model costs what the vendor charges, or nothing when it's a model you run.
- Plug in anything. Closed tools give everyone the same data sources, so every outreach starts from the same foundation. Here you can plug in any information source as a tool or as a signal that starts your workflow. Standing out is what closes deals.
On macOS or Linux with Docker (Compose v2.24 or newer) running:
curl -fsSL https://openbower.ai | shPrefer to run it yourself?
git clone https://github.com/obris-dev/openbower.git && cd openbower && sh scripts/bower-admin.sh installbower-admin is how you operate the install:
| Command | Does |
|---|---|
bower-admin up / stop |
start the stack, or halt it in place (a running row finishes first) |
bower-admin logs [service] |
tail every service, or one (core, jobs, fill-consumer, web) |
bower-admin status |
what is running |
bower-admin setup |
configure where models run, and the search vendor |
bower-admin upgrade |
move to the newest release and rebuild |
bower-admin help |
everything else |
Note
Signing in uses the hosted account hub, out of the box. Sign in on your install sends the browser to the hub's login page at app.openbower.ai and back to your install, signed in. The same account unlocks the built-in data sources, such as the similar-companies source.
OpenBower is bring-your-own-model; the stack does not bundle one. Inference sources (their structure and their keys) live in one file, config/providers.toml, seeded from config/templates/providers.example.toml. A section names a registered provider spec, and any source that speaks it is a first-class entry:
- On your laptop. To run models locally, install Ollama or vLLM, then run
bower-admin setupto point the stack at it. - Your own deployment. A vLLM box, a gateway, or any server that speaks the OpenAI or Anthropic protocol: add a section with its
base_url. Self-hosted servers work keyless. - The vendor itself. OpenAI or Anthropic, with an
api_keyinline; the canonical vendors stay out of the catalog until a key is present.
A typo'd section refuses startup with the section named, so a broken config never runs silently.
Tool vendors and their wiring live in config/tools.toml, seeded from its template. The install's setup step asks for a Serper key (a free account starts with 2,500 queries), checks it with one query, writes it, and wires web search to it, which is the setup the product works well with: real Google results for web search, and the only vendor for finding contacts. Without a key, web search falls back to DuckDuckGo (free, keyless, weaker results) and finding contacts stays off; bower-admin setup asks again any time. On the free door a fill is budgeted: one whose search count would exceed the budget is refused before it spends, naming the metered next step. bower-admin tools prints the live matrix.
Open the app, create a sheet (or import a CSV), configure your agentic columns, then start adding rows. Each row's details land as its research completes, and a Send column syncs finished rows wherever you send from.
graph TD
subgraph In
UI[Add rows by hand]
HOOK[Webhook ingest]
CSV[CSV import]
end
subgraph OpenBower
SHEET["Sheet<br/>rows + columns"]
AGENT["Agents<br/>prompt + model + tools,<br/>one per key detail"]
TOOLS["Tools<br/>web search | find contacts"]
CELLS["Cells<br/>the answer, its sources,<br/>or the reason it is blank"]
OUT["Send column<br/>batched, signed webhooks"]
end
subgraph Out
CRM[Your CRM]
SEQ[Your sequencer]
AUTO[An automation]
end
UI --> SHEET
HOOK --> SHEET
CSV --> SHEET
SHEET -- "a row lands" --> AGENT
AGENT --> TOOLS
AGENT -. "your model" .-> LLM["any OpenAI or Anthropic compatible endpoint<br/>Ollama | vLLM | a gateway | the vendor"]
AGENT --> CELLS
CELLS -- "the row completes" --> OUT
OUT --> CRM
OUT --> SEQ
OUT --> AUTO
- New rows land on a sheet, by hand, by webhook, or from a CSV.
- Agentic workflows run as the rows land, adding the details that matter for your GTM play.
- As the details land, the results sync to your CRM, sequencer, or automation, or you get notified, so you act in real time instead of checking the sheet.
Today the engine runs on signals you source yourself: a row you add, a webhook you wired, a CSV you had. Next, the common signals come built in: a fundraise, a leadership change, a hiring spike, a job post, a product launch. Nothing to wire; each one lands as a row and notifies you when its research is ready. The moment something relevant happens, it reaches you first, so you're in front of the right person while it still matters.
Which signal would start a play for you? Open an issue and say.
Self-hosting is free and stays free. A hosted version (we run the engine for you: always on, listening for your GTM signals) is in the works as the paid tier, a hosting fee rather than credits.
Join the waitlist at openbower.ai.
- CONTRIBUTING.md: contribution flow, branch naming, running the checks.
- CHANGELOG.md: notable changes per release.
- DEPLOY.md: the self-host footprint, service by service, and the environment it needs.
- SECURITY.md: reporting a vulnerability.
- AGENTS.md: the design conventions, plus the web workspace's own in web/AGENTS.md.
OpenBower is open source under the Apache License 2.0, with additional terms reserving an optional ee/ directory for future commercial features.

