$11 a year, bring your own API key

A respectful Nepali WhatsApp chatbot for small teams.

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.

Service
$10 / year
Maintenance
$1 / year
Runs on
Node + Docker
engine.status
Session
paired
Model
gpt-4o-mini
Hours
18:00 to 09:00
Queue
0 pending
Ejionline · text only · जीauto

Today

नमस्ते! Hi, are you open tomorrow? Need two dozen cardamom buns for 8am.

23:46

जी, we open at 7:30 tomorrow and can have 24 cardamom buns ready for 8:00. Shall I put them under your name?

23:46

Replied in 1.4s with your key and your model

What it does for you

It answers customers while you sleep.

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.

~1sAverage reply time with your own LLM key
24/7Answers through the night — even when you are offline
12Messages of context kept per conversation
0Media handled — images, voice and files are never touched
Do you deliver on Saturday?
Yes, before 11:00.
Same address as last time?
12 messages in context

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.

18:00 to 09:00Asia/Kathmandu

Works the hours you set

One window per day, with overnight wrap. Outside it the engine stays quiet, or you can leave it on around the clock.

+977 98...ignored
+1 415...replying
Personallabel on

Leaves personal chats alone

Ignore numbers in config or with !ignore. Optionally archive and label those chats instead of replying, so the inbox stays tidy.

ImageVoiceVideoFileLocationSticker
Skipped and logged

Skips everything that is not text

Media is never downloaded, opened, or answered. Images, voice notes, video, documents, stickers, and locations are left untouched.

Key stays on your host

config.json is excluded from the image and mounted at runtime, so the key is never baked into a layer.

Bursts queue, not crash

Replies run through a persisted FIFO queue with bounded concurrency, restored after a restart.

Chat only, by design

A hard-coded guardrail stops it from claiming tasks it cannot do: no payments, bookings, or file sends.

Control

Change the rules from WhatsApp.

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.

Ejiadmin commandsadmin

Today

!settime 18:00 09:00

21:12

Active hours set to 18:00 to 09:00, Asia/Kathmandu.

21:12

!addknowledge Closed on public holidays.

21:13

Added. Knowledge base now holds 1 entry.

21:13
report-2026-11-05.pdf2 pages, 41 KB

After install

Control your agent with ! commands.

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

One service. Two ways to run it.

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.

  • Every command and config option
  • Your server, your key, your volume
  • Docker Compose and config file
  • Updates from the repository
Self-host for free
Setup and maintenance

Managed setup

$11per year

Service $10 plus $1 maintenance.

  • Deployed once on your machine
  • Session, schedule, and prompt configured
  • Maintenance for the socket and dependencies
  • Renew yearly, no per-message fee
Get the $11 setup

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

Questions, answered.

The parts people ask about before pairing an account.

Does my phone need to stay online?

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.

Which models can it use?

Any OpenAI or OpenRouter model id, including gpt-4o-mini, Claude models, and Llama models. You bring the key and pay the provider directly.

What happens to images and voice notes?

They are skipped and logged. The engine never downloads, opens, or replies to media, in either the free or the paid setup.

Can I change the prompt without a restart?

Yes. Send !setprompt from an admin number. !resetprompt returns to the version saved in config.json, and both changes survive a restart.

Where does my API key live?

In config.json on your host, mounted at runtime. It is excluded from the Docker image, so it never lands in an image layer.

What happens if a burst of messages arrives?

Replies go through a background queue with bounded concurrency. Pending jobs are saved to the volume and restored after a restart.

Who can change the rules from WhatsApp?

Only numbers listed as admins in config.json can run commands like !setprompt or !ignore. If admins is empty, commands are disabled entirely.

Do my live settings survive a restart?

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.

Can I use any OpenAI-compatible model?

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.

How do I get a daily activity report?

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?

Tell us what you need.

Leave a note and we will open a WhatsApp chat with your details already written — no emails to lose, no form submissions stored.

I'm interested in

Submitting opens WhatsApp with your message pre-filled to +977 975 140 2120.

Chat on WhatsApp