selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

OpenOutreach logo

Self-host OpenOutreach

v0.1.0

AI agent that finds qualified B2B leads and emails them

BetaOpen SourceGPL-3.0
docker run --pull always -it -v ~/.openoutreach/data:/app/data ghcr.io/eracle/openoutreach:latest 10 emails > leads.csv
Updated10 hours ago
LanguagePython
Setup difficultyModerate
Stars
3 434
Docker
ghcr.io/eracle/openoutreach
Terminal recording of the CLI onboarding, finding leads and sending email

What is OpenOutreach?

Should you self-host OpenOutreach?

OpenOutreach scores 53/100 on selfhost.directory (how scoring works) and ranks #8 of 12 in Marketing Automation. It has 3 434 GitHub stars.

There was no stable release in the past 12 months, so check the repository's recent activity before you rely on it.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is GPL-3.0-licensed and written mostly in Python.

Its closest alternative on selfhost.directory is voyager (58/100, 1 822 stars). It scores higher overall, so compare the two before you pick. See OpenOutreach vs voyager side by side.

Features

  • AI lead discovery
  • Browserless, no scraping
  • Claude Code plugin and agent skill
  • Cold email sending from own mailbox
  • Credit-gated email enrichment
  • CSV export of leads
  • Headless configuration via environment
  • LLM qualification with reason per lead
  • One-command CLI setup
  • Persistent local lead store
  • Send guards (daily cap, window, pacing)

OpenOutreach README

How to install OpenOutreach

Install OpenOutreach with Docker

Environment variables
OPENOUTFIND_*, OUTSEND_* (usually via --env-file), OPENOUTREACH_DB
docker run --pull always -it -v ~/.openoutreach/data:/app/data \
  ghcr.io/eracle/openoutreach:latest 10 emails > leads.csv

One job per container: it runs until the goal is met and exits; `-it` is only needed for first-run interactive onboarding. No ports to publish.

How to configure OpenOutreach

  • HOST_GID1000Group ID the compose deploy chowns data files with, for the mounted ./data directory.

    Group ID the compose deploy chowns data files with, for the mounted ./data directory.

  • HOST_UID1000User ID the compose deploy chowns data files with, for the mounted ./data directory.

    User ID the compose deploy chowns data files with, for the mounted ./data directory.

  • OPENOUTFIND_*Environment variables the finder child reads on every run; the onboarding wizard exports its answers into them, and a question whose variable is already set is not asked.

    Environment variables the finder child reads on every run; the onboarding wizard exports its answers into them, and a question whose variable is already set is not asked.

  • OPENOUTREACH_DB/app/data/db.sqlite3Path to the SQLite database holding leads, the discovery walk, the mail log and the onboarding answers; the container image sets it to /app/data/db.sqlite3.

    Path to the SQLite database holding leads, the discovery walk, the mail log and the onboarding answers; the container image sets it to /app/data/db.sqlite3.

  • OUTSEND_*Environment variables the sender child reads on every run; set them (typically via --env-file) for a headless install with no TTY.

    Environment variables the sender child reads on every run; set them (typically via --env-file) for a headless install with no TTY.

  • --product-docsinit flag reading the long product description from a markdown file instead of a prompt or shell-quoted flag.

    init flag reading the long product description from a markdown file instead of a prompt or shell-quoted flag.

  • --targetinit flag reading the target-market description from a markdown file.

    init flag reading the target-market description from a markdown file.

FAQ

Do you contact the people on my list?

No — the delivered list stops at the file, and the only message sent is the reply to you.

What happens to my product description?

It is used only to run the search and write the reasons, and is not resold, published or used for training.

How do I order more leads?

The email carrying your free sample contains a Stripe link to choose a quantity, or you can order straight away at $2 per lead.

Why are the first ten leads free?

Reading the fit reasons for your own niche is how you judge whether they are worth paying for; one free batch per person, and a second niche is treated as a new order.

More in Marketing Automation

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…