An open-source, self-hosted workspace for GTM teams and their agents.
Docs · Install · Releases · AGPL-3.0
Give OpenGTM a market, a list, or a workbook. It finds companies and people, enriches rows through cost-ordered provider waterfalls, researches hard questions with cited agents, watches for buying intent, and sends qualified records to the tools your team already uses. Your data stays on your infrastructure; third-party calls use keys you choose. A zero-key demo is included.
You need Git, Docker with Compose v2, and roughly 4 GB of available RAM. No provider key is required to try the demo.
macOS or Linux:
git clone https://github.com/debpalash/OpenGTM.git
cd OpenGTM
./scripts/install.shWindows PowerShell with Docker Desktop:
git clone https://github.com/debpalash/OpenGTM.git
Set-Location OpenGTM
.\scripts\install.ps1Open http://localhost:3000. Sign in with the generated admin password in
.opengtm-initial-credentials (ignored by Git; do not share it). The installer
generates database, runtime-role, and signing secrets, creates a writable data
directory, then starts the stack. It leaves an existing .env untouched. Change
the admin password after signing in and remove the credentials file.
Use a versioned checkout and image. Point a domain at the host and provide a TLS reverse proxy such as Caddy; the app itself stays on loopback. On a Linux host with Git and Docker Compose:
git clone --depth 1 --branch v3.0.0 https://github.com/debpalash/OpenGTM.git
cd OpenGTM
./scripts/install.sh --no-start
DOMAIN=gtm.example.com # replace with your domain
cat >> .env <<EOF
APP_ENV=production
PORT=127.0.0.1:3000
CORS_ORIGINS=https://$DOMAIN
YUPCHA_IMAGE=ghcr.io/debpalash/opengtm:3.0.0
EOF
docker compose pull
docker compose up -d --no-buildFor Caddy, a site block is enough once DNS points at the server and ports 80/443 are open:
gtm.example.com {
reverse_proxy 127.0.0.1:3000
}Open https://gtm.example.com and use the generated credentials file. Replace
the example domain in both commands and Caddy config. The installer-generated
secrets satisfy production startup checks; PORT=127.0.0.1:3000 keeps the
bundled HTTP listener private. PostgreSQL, Redis, and the API bind to loopback
or the internal Compose network. Set up backups and review the
production checklist
before inviting a team. Never expose port 3000 directly over the internet.
For a new release, fetch its tag, check it out, update YUPCHA_IMAGE in .env
to the same version, then run docker compose pull && docker compose up -d --no-build. Keep the existing .env, data/, and Docker volumes when
upgrading. The Docker guide
explains the services and scaling.
docker compose ps # service health
docker compose logs -f api worker # follow jobs
docker compose up -d --scale worker=4 # add capacity
docker compose down # stop without deleting data- Workbooks: import leads, add formulas, HTTP columns, enrichment waterfalls, AI research, and output columns. Estimated spend is shown before a run.
- Live audiences: segment records, watch hiring and buying signals, and trigger scheduled refreshes and automations.
- Activation: connect HubSpot, Salesforce, Slack, Sheets, Airtable, Instantly, Smartlead, webhooks, warehouses, or consent-gated ad audiences.
- Agent access: use the same workspace through REST, webhooks, and an auditable MCP server with scoped read/write capabilities.
Provider keys are optional at install. Add them under Settings → API Keys when you're ready to use paid or authenticated providers.
Create a workspace token from an admin session, then give your MCP client a read-only token first. The server runs inside the existing API container:
{
"mcpServers": {
"opengtm": {
"command": "docker",
"args": [
"compose", "-f", "/absolute/path/to/OpenGTM/docker-compose.yml",
"exec", "-T", "-e", "OPENGTM_MCP_TOKEN",
"api", "python", "-m", "apps.mcp.server"
],
"env": { "OPENGTM_MCP_TOKEN": "YOUR_WORKSPACE_TOKEN" }
}
}
}See the MCP guide for token creation, Codex/Claude/Pi/OpenCode setup, HTTP transport, and safe write scopes.
browser / REST / MCP
│
▼
FastAPI ──► PostgreSQL + forced workspace RLS
│ │
├──► Redis progress └──► durable job queue
│ │
└──────────────────────────────▼
workers + scheduler
│
providers / web / CRM / warehouse / ads
apps/api owns the backend, apps/web the React UI, apps/mcp the agent
bridge, and apps/docs the documentation. Read the
architecture guide for tenancy and failure behavior.
OpenGTM covers the discover → enrich → segment → act → learn loop. It is not a pixel-for-pixel Clay clone, and the provider catalog is still growing. Public multi-tenant hosting needs additional egress, identity, custody, restore, and security-review work beyond the supported team-controlled Compose deployment; see the parity roadmap.
Issues, provider requests, docs fixes, and focused pull requests are welcome. Start with CONTRIBUTING.md. Licensed under GNU AGPL-3.0; network use of modified versions carries source availability obligations.
