Websites are built and hosted on noclick.com. A self-hosted NoClick, this repo, builds agents and automations: run it yourself.
Every picture below is a real run, started by the text shown: the site on noclick.com from a fresh account, the agent and the reminders on a local install of this repo.
Text it:
Can you make me a website for my bakery? Little Rye Bakery, 22 Maple Ave. Open Tue–Sun 7am–3pm, closed Mondays. Sourdough $9, croissants $4.50, gluten-free loaf on Saturdays. I want customers to be able to message me from the site.
Seven minutes later it was live: the bakery's name and address, its menu with prices, the hours and a message form. A first version was up in three minutes; NoClick built it again and checked the pages in a browser before it said it was done.
A self-hosted NoClick doesn't build websites, but it builds agents and automations by text the same way.
An agent that answers your customers. Text it the facts and ask for an agent: its builder makes one that answers from them alone, and Share on the agent's chat gives a page your server serves to anyone with the link.
Reminders, once or every weekday.
Every weekday at 2:30pm, remind me to send tomorrow's preorders to the kitchen. And in 2 minutes, remind me to take the sourdough out.
# Needs Docker. Then open http://localhost:3000
curl -fsSL https://noclick.com/install.sh | shThen link your phone, in three steps, and text it.
- A line. For WhatsApp, a Meta app with WhatsApp. For iMessage, a Sendblue account. Paste its keys in Settings → Self-hosted → Texting, which checks them.
- A public HTTPS address, so Meta and Sendblue can deliver texts:
PUBLIC_WEBHOOK_URL. On a laptop, a tunnel works. - Your phone, linked. In Chat → Connect, scan the code and send the message it drafts.
Chat asks for a model key (OpenRouter) first. Redis comes with the Docker install. Step by step.
What texting does, and doesn’t
- It answers numbers linked to an account on your instance, each person their own. Any other number gets one short note a day on how to link it; a text never makes an account.
- WhatsApp lets it write to you only within 24 hours of your last text. Past that, a reminder waits in the web chat. iMessage has no such limit.
- The Meta app and the Sendblue account are yours, on their own pricing. Texts go between them and your server, not through NoClick.
What’s in this repo
This repository is the whole platform, open source under the AGPL:
- Chat. The assistant on your instance, in one conversation on the web, WhatsApp and iMessage. It sets reminders, remembers what you tell it, and builds workflows when you ask.
- The canvas. Triggers, branches, loops, code, and 130+ integrations: Slack, Gmail, Notion, Linear, HubSpot, Stripe, Postgres, Google Sheets and the rest.
- The AI builder. Describe a workflow and it wires the nodes, asking only for accounts and the choices that are yours.
- Agents with tools. Any OpenAI, Anthropic or OpenRouter model in process, or Claude Code, Codex, OpenCode, Hermes and OpenClaw from the CLI you have installed.
- Channels for your workflows. Webhooks, schedules, inbound email, Slack, Discord, Telegram, WhatsApp and Twilio SMS.
- MCP. Point Claude Code, Claude or ChatGPT at your instance and it builds for you.
- The workflow SDK in
sdk/(noclick0.1.x on npm and PyPI).noclick0.2 and later is noclick.com’s platform API.
noclick.com runs this engine on NoClick’s own numbers and infrastructure. What runs where.
Docs · Self-hosting guide · Discord
Other ways to install
The same thing by hand:
git clone --branch <tag> https://github.com/noclickapp/noclick.git && cd noclick
./scripts/noclick-setup.sh
NOCLICK_VERSION=<version> docker compose up -dEach run fetches the latest release, generates this instance’s secrets (the credential-encryption key is kept across re-runs) and pulls its images (about 1.5 GB the first time), and nothing is compiled on your machine. Re-run to update. Pin a release with NOCLICK_REF=<tag> from the releases page; NOCLICK_BUILD=1 builds from the checkout. Every option is at the top of install.sh.
Or deploy, with nothing to fill in: the instance prepares its database, runs its own auth and makes its own keys on first boot.
The self-hosting guide covers your own Postgres, storage, OAuth apps, model providers and what each host provisions.
Develop from source
Docker, the Supabase CLI, Python 3.12, Node.js 20+ and pnpm, then:
pip install -r requirements.txt
make local # local Supabase, backend and frontend; sign up with any emailcd backend && pytest # backend tests
cd frontend && npm run typecheck && npm run build && npm test # frontend checks
cd infra && supabase migration up --local # migrations| Path | What lives there |
|---|---|
backend/nodes/ |
Every integration: one module per service, its config UI generated from its Pydantic model |
backend/wss/ |
Socket.IO events, handlers and the workflow engine |
backend/coder/workflow/ |
The workflow DSL and the AI builder |
backend/mcp_server.py |
The MCP server |
frontend/app/ |
The React Router app: canvas, config panels, interfaces |
infra/supabase/ |
Database migrations |
sdk/ |
The workflow SDK |
Adding an integration is the easiest start: copy the closest module in backend/nodes/, register it in backend/nodes/core/registry.py, and its config UI generates itself. CONTRIBUTING.md has the conventions; come say hello on Discord.
AGPL-3.0 (AGPL-3.0-only) for NoClick, Apache-2.0 for the SDKs. Run it, change it and self-host it anywhere; if you let others use a modified version over a network, offer them its source.
The details
Workflows, functions and components you build with NoClick are yours, and code that talks to NoClick over its HTTP or MCP API carries no AGPL obligation. Commercial licenses: legal@noclick.com. Names and logos: the trademark policy. Releases up to v0.2.12 stay under the Sustainable Use License 1.0 they shipped with. LICENSE is the authority.