Fanad · for Home Assistant
Get it out of your head.
The no-nag scratchpad that lives in your Home Assistant: personal tasks and memories, without turning HA into a full-on LLM assistant.
Private, local-first tasks, notes, lists and timers. A bot in your Telegram for the road, a rich web UI in your sidebar at home. No nagging, no guilt streaks, a pad that empties. DM your house, it can ping you back.
Why it exists
Built to fill the gaps in my own Home Assistant
I run Home Assistant OS at home. It's brilliant at devices and terrible at
remembering things for me. I also wanted remote control without exposing anything to the
public internet. So I text a bot on Telegram, remind me to take the bins out at 7,
timer 12 min, ha turn off the kitchen lights, and it just works, because
Telegram is an outbound connection: no open ports, no reverse proxy, no cloud tunnel.
At home, the full web UI. A lightweight local LLM you already run (LM Studio or
Ollama) does the parsing and summarizing.
What you get
Timers, tasks, and remote control, from Telegram or your sidebar
Server timers
"timer 20 min for the oven" from any phone in the family. The ding announces on your Voice PE or media players, fires a script, or sends a notify.
Tasks & reminders
Natural language in ("call the dentist on tuesday"): deadlines, snooze, one-task-at-a-time focus. Dated tasks push straight to your HA calendar.
ha from anywhere
"ha turn on porch light", "ha run goodnight" from Telegram, routed to your own Assist agent. Remote control, zero exposed ports.
Notes & nested lists
Packing lists, shopping, project outlines. A pad that empties, not a notes app that fills up. Get it out of your head.
Three surfaces
Telegram and Slack on the road, a rich web UI in your HA sidebar at home. Same data, same brain, everywhere.
Opt-in modules
Journal with daily/weekly summaries, diet logging, process batches, sub-notebooks, metrics. All off by default. Turn on only what you'll use.
The privacy part
What the LLM does, and deliberately doesn't
The LLM only parses and ranks what you typed. It never invents data, and it never acts on your house.
- Parsing, not agency. House commands (
ha …) are handed to your own Assist agent verbatim: deterministic passthrough, not model output. Dings ringing your speakers are plain code you opt into. - Local by default. Point Fanad at the LM Studio or Ollama box you already run.
A
mockprovider works with no model at all, so you can try it before wiring anything. - Cloud is triple-locked. BYO cloud keys only work behind an explicit
LLM_ALLOW_CLOUDflag: off by default, hard-blocked at runtime, hidden in the UI when off. - Your data stays put. SQLite on your box, secrets encrypted (AES-256-GCM), no
telemetry, no phone-home. Everything lives in
/dataand rides along in HA backups.
Install
Five minutes on Home Assistant
Fanad ships as a Home Assistant App (add-on), a prebuilt image the Supervisor runs for you. You need HA OS or Supervised (Container/Core users: see plain Docker below).
-
Add the Fanad repository
Settings → Add-ons → Add-on store (newer installs: Settings → Apps) → the ⋮ menu → Repositories, and add:
Add via My Home Assistant →https://github.com/NTBooks/fanad-ha -
Install & start
Once the repository is added, Fanad shows up in your add-on store (under "Fanad Add-ons"). Open it, click Install, then Start. It appears in your sidebar via ingress, no ports to open, no reverse proxy. Works on 64-bit Pi (
aarch64) andamd64. -
Point it at your model
Open the Web UI → ⚙ Settings, pick LM Studio or Ollama, and enter its address, or start with the
mockprovider and wire the model later.Use a LAN IP, not localhostFanad runs in a container, so
localhostis the container, not your desktop. Point it at the model's machine, e.g.http://192.168.1.50:1234/v1. Fanad is light enough for a Pi; the model should live on a real box (the desktop already running LM Studio/Ollama).
As an add-on, Fanad reaches Home Assistant through the Supervisor automatically, with no URL or
token to paste. Type optin ha to turn the module on, then open Settings →
Home Assistant and click Load choices: Fanad reads your real voice
satellites, scripts, and notify services so you tick them from a list instead of typing entity IDs.
Choose which speakers announce the ding, which script to run, or which phones to notify, then hit
Save & test to ring them once and confirm it worked.
Everything lives in /data, which Home Assistant deletes on uninstall, so back up first. HA's native backups cover it (database and encryption key together).
On your dashboard
What Fanad exposes to Home Assistant
Fanad publishes a read-only summary your Home Assistant can poll as sensors, so its numbers can live on a wall tablet, drive automations, or turn a lamp red when something is overdue.
Tasks at a glance
Open, due today, overdue, cleared today, and captured today, plus the next deadline and reminder as timestamps, whether a task is currently active, and today's mood.
Modules & metrics
Only for the modules you use: active timer and next fire, calories today vs target and last weight, journal, list, and batch counts, and your own metrics (water, steps, whatever you track).
Numbers, not your notes
Counts and timestamps only by default; task titles are opt-in. A read-only token can only GET, so it can never post a message or change anything.
To wire it up, mint a read-only token in Settings → Security and point a Home
Assistant REST sensor at /api/ha/summary with it. Paste-ready YAML is in the
sensor guide. A native
integration (todo entities, an Assist conversation agent, push sensors) is on the roadmap.
No Home Assistant?
Run Fanad anywhere
You don't need Home Assistant. Fanad is a plain local app: run it on any machine and use the same web UI, Telegram, and Slack.
One line, on any platform with Node 24+:
npx github:NTBooks/Fanad
That copies Fanad into ./fanad, opens a browser setup wizard, installs everything,
builds the UI, and starts the server at http://localhost:8787. Point it at your
LM Studio or Ollama box in Settings, or choose the mock provider to try it with no
model at all. On Windows with no Node, grab the FanadSetup installer from the
releases page; it bundles its own runtime.
The same image the add-on uses runs anywhere. Then open http://<host>:8787.
docker run -p 8787:8787 -v fanad:/data ghcr.io/ntbooks/fanad-app:latest
Fair questions
The things you're right to ask
Does it need the cloud?
Does the AI control my house?
Is this AI-generated slop that'll be abandoned in a month?
Why not just HA todo lists + Assist?
What happens to my data if I uninstall?
/data, which Home Assistant deletes on uninstall, so
back up first. HA's native backups cover it (database and encryption key together).A note from the maker
This is a one-person project
I built Fanad for myself and my own household, and I'm sharing it because it might help you too. Fair warning: my bandwidth for support and changes is limited. I fix what I run into in my own daily use, but I can't promise feature requests, fast replies, or help debugging your particular setup. It's open source under MIT, so you're welcome to read the code, fork it, and open a pull request. Run it because you like what it already does, not because of what it might someday become.