Sells while you sleep
Customers get a helpful answer in about a second — even at 2am — written by your own key, with 12 messages of context so it actually makes sense.
$11 a year, bring your own API key
It runs in Docker on your own machine, answers text messages in about a second with your own OpenAI or OpenRouter key, and keeps each conversation in context.
Today
नमस्ते! Hi, are you open tomorrow? Need two dozen cardamom buns for 8am.
जी, we open at 7:30 tomorrow and can have 24 cardamom buns ready for 8:00. Shall I put them under your name?
Replied in 1.4s with your key and your model
What it does for you
A reply in about a second, a memory of every thread, and a hard line around anything that is not text — so the business never stops, and nothing risky happens.
Customers get a helpful answer in about a second — even at 2am — written by your own key, with 12 messages of context so it actually makes sense.
One window per day, with overnight wrap. Outside it the engine stays quiet, or you can leave it on around the clock.
Ignore numbers in config or with !ignore. Optionally archive and label those chats instead of replying, so the inbox stays tidy.
Media is never downloaded, opened, or answered. Images, voice notes, video, documents, stickers, and locations are left untouched.
config.json is excluded from the image and mounted at runtime, so the key is never baked into a layer.
Replies run through a persisted FIFO queue with bounded concurrency, restored after a restart.
A hard-coded guardrail stops it from claiming tasks it cannot do: no payments, bookings, or file sends.
Control
Admin numbers can edit the prompt, add knowledge, set hours, and pull a report without opening a terminal.
!setpromptReplace the system prompt live, up to 4,000 characters.!addknowledgeAdd a fact for the bot to answer with, up to 100 entries.!settimeSet active hours, including an overnight window.!settzChange the timezone used for the schedule.!ignoreStop replying to a number, or bring it back with !unignore.!reportGet reply counts and response timing on demand.!reportpdfReceive a formatted PDF report as a document.Throttled by default: five replies per chat per hour, a five second global cooldown, and duplicate collapsing.
Today
!settime 18:00 09:00
Active hours set to 18:00 to 09:00, Asia/Kathmandu.
!addknowledge Closed on public holidays.
Added. Knowledge base now holds 1 entry.
After install
Once it is paired, message the bot from any admin number and it updates itself live — no terminal, no restarts for most changes.
!ignore <number>Add a number to the ignore list — no auto-replies.!unignore <number>Remove a number from the dynamic ignore list.!ignorelistShow all currently ignored numbers.!setprompt <text>Update the AI master prompt live (max 4000 chars).!getpromptShow the currently active master prompt.!resetpromptRevert to the master prompt from config.json.!addknowledge <text>Add a fact to the knowledge base (max 2000 chars each, 100 entries).!knowledgeList all knowledge-base entries.!clearknowledgeClear the entire knowledge base.!settime <start> <end>Set active hours live, e.g. !settime 18:00 09:00 (24/7: 00:00 00:00).!settz <timezone>Set the timezone live, e.g. !settz Asia/Kathmandu.!getscheduleShow the current active hours and timezone.!reportSend a full on-demand report: stats and responding timing.!reportpdfGenerate and send a formatted PDF report as a WhatsApp document.!helpOverview of all commands. !help <command> shows details for one command.Schedule, knowledge, ignore, and prompt changes persist in the Docker volume and survive restarts. Defaults come from config.json.
Pricing
No per-message fees. You pay your LLM provider directly, and you keep the session and the data on your own machine.
Self-hosted
$0forever
Run the full engine yourself.
Managed setup
$11per year
Service $10 plus $1 maintenance.
Prices in USD. LLM usage is billed by your provider to your own account. The paid plan covers deployment and maintenance, not your provider bill.
FAQ
The parts people ask about before pairing an account.
The engine pairs as a linked device and stores its session in a Docker volume, so your phone does not need to be awake for it to reply. The container does need to be running.
Any OpenAI or OpenRouter model id, including gpt-4o-mini, Claude models, and Llama models. You bring the key and pay the provider directly.
They are skipped and logged. The engine never downloads, opens, or replies to media, in either the free or the paid setup.
Yes. Send !setprompt from an admin number. !resetprompt returns to the version saved in config.json, and both changes survive a restart.
In config.json on your host, mounted at runtime. It is excluded from the Docker image, so it never lands in an image layer.
Replies go through a background queue with bounded concurrency. Pending jobs are saved to the volume and restored after a restart.
Only numbers listed as admins in config.json can run commands like !setprompt or !ignore. If admins is empty, commands are disabled entirely.
Yes. Schedule, timezone, ignore list, knowledge base, and prompt changes are saved in the Docker volume (auth_info_baileys) and reapplied automatically after a restart.
Yes. Set the provider to openrouter and any OpenRouter model id works — for example anthropic/claude-3.5-sonnet or meta-llama/llama-3.3-70b-instruct. You can also point it at a custom gateway with apiBaseUrl.
Enable dailySummary in config.json with an hour, and the engine sends a summary of replies, ignored chats, media, errors, and queue backlog to every admin number at that time.
Interested?
Leave a note and we will open a WhatsApp chat with your details already written — no emails to lose, no form submissions stored.