You talk to it on Signal. It keeps your calendar and to-do list and reminds you of things. It only answers you, it's never exposed to the internet, and your calendar and tasks are stored on your own devices.
About 2 hours in total, most of it waiting for installs. Claude Code does the typing; you do the clicking. Free and open source on GitHub.
You and your gremlin
Dentist Tuesday the 14th at 3pm
The 14th is a Wednesday. Did you mean Wednesday the 14th, or Tuesday the 13th?
Wednesday. And remind me to buy a birthday card tomorrow at 9
Added "Dentist", Wed 14 Oct, 15:00. Reminder set for tomorrow 09:00.
Before you start
What you need
Get these sorted first. Everything else is in this project.
A Windows 11 PCUsually on. The bot sleeps when the PC sleeps.Have it
A second phone numberWith Signal installed. This becomes the bot. An eSIM, a prepaid SIM or an old phone all work. Never use your own number.A few £ a month
A brain (your choice)The AI that reads your messages. Run it on your own PC, free and fully private, or pick a cloud option. You choose in step 6.Free to subscription
A calendar (your choice)By default it lives on your own PC. You can pick iCloud, Fastmail or another provider in step 9.Free by default
TailscaleA private network between your PC and your phone. Sign up at tailscale.com.Free
This projectOn GitHub, choose Code → Download ZIP, and unzip it somewhere easy, like Documents.Free
How it fits together
Nothing is open to the internet
Your Signal→Bot's number→Your PC: the assistant→Claude
Your PC: tasks and calendar server↔ private Tailscale link ↔Tasks.org and Calendula on your phone
or, if you prefer:Your PC↔iCloud, Fastmail or another calendar
Be clear-eyed
What stays private, and what doesn't
Your gremlin is private from the internet and from strangers. Your conversations go to whichever brain you choose. Only the local brain keeps them on your PC.
Stays on your devicesYour calendar and tasks (if kept on your PC, the default), the gremlin's notes about you, its settings and Signal keys, and your backups unless you sync them to Dropbox or OneDrive.
Goes to your brainEvery message you send, plus whatever the gremlin reads to answer it: events, tasks, notes. With a local brain, that stays on your PC. With a cloud brain, see the ratings below.
Passes through, encryptedSignal carries your messages end-to-end encrypted. Tailscale connects your devices, and the traffic between them is encrypted end to end.
Local, on your PC●●●●●Never leaves your PC. Free. Needs a strong PC (ideally an NVIDIA card with 8 GB+); slower and less capable than the cloud.
DeepInfra●●●○○Zero data retention written into its Terms of Service, no training. US company. Pay per use, roughly $3–6 a month. Tested on a real gremlin.
Ollama Cloud●●●○○Says it processes and discards prompts, no training. Mostly US servers. Free with limits, or $20 a month.
Claude (Anthropic)●●○○○Most capable. Kept 30 days with model training off; up to 5 years and used for training if on. Claude Pro subscription.
There's no silent fallback: if your brain fails, you get an error, not a less private brain. Claude Code is only the installer; it sees the setup, not your daily chats.
The setup
Ten steps
Tick each step when its check passes. Your ticks are saved in this browser.
Yousomething only you can do: a click, a password, a scan
Claude CodeClaude Code runs it for you and explains as it goes
1
You10 min + restart
Turn on Linux inside Windows (WSL)
Press Start, type PowerShell, right-click it and choose Run as administrator.
Paste this and press Enter, then restart the PC when it finishes.
Admin PowerShell
wsl --install
After the restart, an Ubuntu window opens. Pick a username (lowercase, no spaces) and a password. Write the password down; you'll type it often.
If Ubuntu doesn't finish installing, run wsl --install -d Ubuntu in the admin window again.
2
You10 min
Install Tailscale and Claude Code on Windows
Install Tailscale on the PC and sign in. Install it on your phone too, sign in with the same account, and turn on Always-on VPN for it (Android: Settings → Network → VPN → Tailscale → gear icon).
Open Claude Code in the gremlin-the-friend-main folder you unzipped.
Admin PowerShell (Tailscale)
winget install --id Tailscale.Tailscale -e
3
You1 min
Hand over to Claude Code
Paste this into Claude Code. From here on it runs the steps and tells you exactly when it needs you. Steps 4 to 10 below show what will happen, so you can follow along.
Paste into Claude Code
I want to set up the private Signal assistant in this folder on my Windows PC.
Read README.md and GUIDE.md first. GUIDE.md is the source of truth, including its
"Known problems" section. Then walk me through the setup one step at a time, in this order:
WSL/Ubuntu, Windows autostart, linux/01 and 02, then linux/brain.sh (help me choose a brain: show me the privacy ratings and,
for the local option, what my PC can handle), then linux/03 to 06.
How to work with me:
- I'm not a developer. Explain each step in one or two plain sentences before running it.
- Anything that needs sudo, an administrator window, a QR scan, a browser login or a password
is something I do myself. Tell me exactly what to type or click, and wait for me to say done.
- Never ask me to paste a password, app password, token, code or QR link into this chat.
The scripts ask for them in hidden prompts.
- Never run `signal-cli receive` or start a second signal-cli daemon.
- After each step, check that it worked (the guide says how) before moving on.
- If something fails, look it up in GUIDE.md's "Known problems" section before trying anything new.
Don't stack fixes: if a change broke something, undo it first.
- Never restart the gateway or kill processes without telling me first.
Start by checking whether WSL and Ubuntu are already installed.
Never paste a password into Claude Code, or into any chat. When a script needs one, it asks in the Ubuntu window and hides what you type.
4
You2 min
Keep the assistant running
Windows switches Linux off when nothing is using it. This adds three hidden background tasks that keep it on, and a Start OpenClaw shortcut on your Desktop for emergencies. It doesn't stop your PC from sleeping.
The script installs the assistant, the Signal connector, the tasks server and Tailscale inside Ubuntu. You type your Ubuntu password when asked, and approve the Tailscale login in your browser.
Ubuntu
cd "/mnt/c/Users/YOU/Documents/gremlin-the-friend-main/linux"
bash 01-install.sh
source ~/.bashrc
bash 02-onboard.sh
6
You: chooseClaude Code5–30 min
Choose your gremlin's brain
The script shows the four options from What stays private, with their privacy ratings. For the local option, it checks what your PC can handle and warns you if it's too weak. You can switch any time by running it again.
Ubuntu
bash brain.sh
Local: nothing to sign up for. The download is several GB.
DeepInfra: create an account at deepinfra.com, add a card under Billing, create an API key, and type it into the hidden prompt.
Ollama Cloud: create a key at ollama.com → Settings → Keys, and type it into the hidden prompt.
Claude: run claude auth login when asked, and switch off model training at claude.ai → Settings → Data privacy controls.
7
Claude CodeYou: scan a QR5 min
Connect the bot's Signal
The script shows a QR code in the Ubuntu window.
On the bot's phone, open Signal → Settings → Linked devices → +, and scan it.
Type the bot's number, then your own number, in international format (+44…). Only your number will be able to talk to the bot.
Ubuntu
bash 03-signal.sh
The QR code is a one-time key to the bot's account. Don't photograph it or share it.
8
Claude CodeYou: one click, phone app10 min
Your private server for tasks and calendar
This sets up a small server on your PC that only your devices can reach. It holds your to-do lists, and your calendar too if you choose that in step 9.
Ubuntu
bash 04-tasks-server.sh
If the script prints a Tailscale link, open it and click Enable. In the Tailscale admin page under DNS, make sure HTTPS Certificates is on. Then run the script again.
On your phone, install Tasks.org from F-Droid. Choose Add account → CalDAV, and enter the server address and username the script printed.
For the password, show it in the Ubuntu window with cat ~/.config/radicale/password.txt. Save it in your password manager.
9
Claude CodeYou: choose where your calendar lives10 min
Calendar and tasks for the bot
The script asks where your calendar should live. If you're not sure, choose 1. You can switch later by running it again.
1 · On your PCNothing to sign up for. Syncs while the PC is awake; your phone works offline in between. No email invitations.Free · default
2 · iCloudNeeds an Apple account and an app-specific password (account.apple.com → Sign-In and Security). Works on Android.Free
3 · FastmailInvitations, a web calendar, and syncing even when the PC is off. Needs an app password (Settings → Privacy & Security).Paid
4 · Another providerNextcloud, Disroot, mailbox.org, Posteo, Zoho, or anything else with a "CalDAV address".Free to cheap
Ubuntu
bash 05-plugins.sh
For options 2 to 4, type the app password into the hidden prompt. Never use your main password.
In Signal, send the bot /new so it picks up its new tools.
On your phone: install DAVx5 and Calendula from F-Droid. In DAVx5, add an account: for option 1, use the same address, username and password as Tasks.org; otherwise, use your provider's. Your calendar then appears in Calendula. Google Calendar and Outlook aren't supported, but you can move your events out of them: export from Google Calendar on a computer (Settings → Import & export), then import the file into your new calendar.
10
Claude CodeYou: three settings15 min
Lock it down and back it up
This switches off features you don't need, gives the bot its rulebook, makes its files private, and saves a backup every night. Point the backup at a Dropbox or OneDrive folder to get a copy off the PC.
If your brain is Claude: claude.ai → Settings → Data privacy controls, turn model training off.
Windows Security → Device security → Core isolation: turn Memory Integrity on.
BitLocker (encrypts your disk): search "Manage BitLocker" in Start and turn it on. Save the recovery key in your password manager. The PC is slower until the first encryption finishes.
Keep it private
The rules for keeping a gremlin
Never feed it passwordsNot in a chat with your gremlin, with Claude Code, or with any AI. If one slips through, change that password.
Keep it out of the sunlightIt stays off the open internet. Only your own devices can reach it, over Tailscale.
Don't let strangers talk to itIt answers only your number, and groups are switched off.
Don't steal its mailEach Signal message can be picked up only once. Never run signal-cli receive yourself.
It can't delete without your yesBefore it removes an event or task, you confirm that specific item.
If something goes wrong
Troubleshooting
Tell Claude Code what you see. It has the full list in GUIDE.md. These are the usual suspects.
The bot doesn't answer at all
Double-click Start OpenClaw on your Desktop and wait a minute. If the shortcut says "down" but the bot replies, trust the bot. If it's still silent, run this in an admin PowerShell:
The bot's phone shows my message, but the bot never answers
Something else picked up the message first, usually a manual signal-cli receive. Stop it and restart the assistant:
systemctl --user restart openclaw-gateway
Don't re-link the device. That's almost never the fix.
The bot says a tool or option doesn't exist
It's still using an old conversation. Send /new in Signal.
Tasks.org: "CLEARTEXT communication not permitted"
The server address must start with https:// and end in .ts.net/. Use the exact address step 8 printed, not a number like 100.x.x.x.
Tasks.org: "connection abort", spinning, or error 500, after it used to work
First, check your PC is awake and the bot answers. If it doesn't, follow "The bot doesn't answer at all". Then open the Tailscale app on your phone. If it shows missing devices or "out of sync", sign out and back in. Also check Always-on VPN is on, and Private DNS is Off or Automatic.
The gremlin is very slow, or answers with nonsense
With a local brain on a PC without a strong graphics card, slow replies are expected. If it ignores its tools or replies with raw code, the model is too small for the job. Run bash brain.sh again and pick a bigger model or a cloud brain.
Step 9 says 401, or the bot can't reach my calendar
The login was refused. It's usually the account's main password instead of an app password, or a typo in the email. Make a new app password and run bash 05-plugins.sh again.
A window keeps flashing on screen
A background task was set up without its "hidden" setting. Run step 4's script again in an admin PowerShell.
"Access is denied" in PowerShell
That window isn't an administrator window. Close it, right-click PowerShell, and choose Run as administrator.
"Sudo is disabled on this machine" or "parameter 'fsSL'"
A Linux command went into PowerShell. Run it in the Ubuntu window instead. Paste there with a right-click.