Loading repository data…
Loading repository data…
ClaraVnk / repository
Home Assistant OS add-on that revives an original Nabaztag (Violet's 2005–2006 Wi-Fi rabbit) with a local OpenJabNab server — drive ears, LEDs, sounds & TTS from Home Assistant. 100% local, no cloud.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Bring an original Nabaztag (the 2005–2006 Wi-Fi rabbit by Violet/Mindscape) back to life and drive it from Home Assistant, fully locally — no cloud.
This repository is a Home Assistant OS add-on repository. Its primary add-on is a small, dependency-free server that speaks the original Violet protocol directly: the rabbit phones home to it (the real Violet servers died around 2011), and Home Assistant drives the rabbit — ears, belly weather icons, nose — through a simple control API.
✅ It works end-to-end — verified live on a real Nabaztag:tag v2. A stock rabbit is a "dumb" Wi-Fi client that downloads its bytecode on every boot (nothing flashed by default) and talks plain HTTP + XMPP. The rabbit boots, breathes, speaks, plays jingles, moves its ears, lights up, listens hands-free for "hey Nabi", asks Claude and answers. The custom Naboot firmware adds a signed OTA path (proven by actually flashing over the air) and a modern config UI; Le Terrier is the public warren. See the Roadmap below for the status of every phase.
Nabaztag (<rabbit-ip>) ──HTTP /vl/bc.jsp,/vl/locate.jsp :80──▶ ┌──────────────────────────┐
▲ │ Add-on @ <haos-ip> │
│ ◀──── XMPP push (commands) :5222 ─────── │ nabaztag-violet (Python) │
│ ───── XMPP events (button/RFID) ───────▶ │ HTTP boot + XMPP + API │
Home Assistant ──── HTTP control API :8099 (/api/...) ─────────▶ └──────────────────────────┘
On boot the rabbit fetches its bytecode (/vl/bc.jsp) and a locate file
(/vl/locate.jsp) that points it at our server, then opens an XMPP stream.
Our server completes the handshake using the documented SASL success-bypass
(no Violet password needed), keeps the rabbit idle, pushes violet:packet
commands, and logs everything the rabbit sends. No OpenJabNab, no reverse
proxy — one clean process.
Commands use the two violet:packet channels reverse-engineered from the
bytecode — programs (MessagePacket) for the rich stuff, ambient
(AmbientPacket) for the at-a-glance indicators:
/api/say, espeak-ng;
no cloud, nothing to install)acquired, ack, rfid_ok, …nabaztag_event Home Assistant events to trigger
automations (Nabi as an input device)Beyond one-off questions, you can hand Nabi a deferred task in plain French and let it watch for you:
"Nabi, préviens-moi quand la batterie de l'aspirateur est pleine." "Rappelle-moi de sortir le linge dans 40 minutes." "Oublie tout."
Nabi remembers the order, Home Assistant watches the condition (a state threshold, an entity state, or the clock), and the rabbit announces it on its own in Violet's voice once it's met — then forgets the task (single shot, up to 5 at a time).
It works by exposing three scripts as tools to your Claude conversation agent
(no add-on change): the spoken request already flows to that agent, which calls
nabaztag_remember_task / nabaztag_remind / nabaztag_forget. A 1-minute
engine in home-assistant/nabaztag_tasks.yaml evaluates the stored tasks and
routes the announcement through script.nabaztag_notify (so quiet hours still
apply unless the reminder is marked urgent).
Setup (once):
home-assistant/nabaztag_tasks.yaml into /config/packages/ (it reuses
proactive.yaml's script.nabaztag_notify — install that too).nabaztag_* scripts and
the entities Nabi should watch (vacuum, washer, weather…) so Claude knows
their entity_id..
├── repository.yaml # declares this as an HA add-on repository
├── nabaztag-violet/ # ⭐ primary add-on — our own Violet-protocol server
│ ├── server.py # dependency-free Python (HTTP boot + XMPP + control API)
│ ├── config.yaml # options (server_address, log_level), ports, arch
│ ├── Dockerfile # installs python3, fetches the bytecode at build
│ ├── build.yaml
│ └── DOCS.md # install / pairing / API / status
├── nabaztag-server/ # OpenJabNab add-on (superseded — kept for reference)
│ └── … # its HTTP listener is non-functional in the upstream image
│ # (Le Terrier — the public warren at
│ # terrier.cyberloutre.fr — lives in a separate
│ # private repo; the live site is the showcase.)
├── firmware-arm/ # Naboot — custom ARM7 firmware (Phase 4/5). Forks
│ ├── apply-mods.py # RedoXyde/nabgcc wpa2 + Ed25519-gated httpflash +
│ ├── boot-mods/mdns.mtl # modernized config UI + boot-side mDNS announcer.
│ ├── crypto/ # Build via ./build.sh --remote HOST --runtime
│ ├── pages/ # {docker,podman} --mode {minimal|full|max|lean|…}.
│ ├── BRICK_FORENSICS.md # Recovery plan + bisection ladder.
│ └── RECOVERY.md
├── firmware/ # Runtime-side bytecode add-ons (mic stream, mDNS,
│ ├── micstream.mtl # OTA helper) compiled into the hybrid bootcode
│ ├── mdns.mtl # served by the add-on.
│ └── patch_main.py
├── home-assistant/
│ ├── nabaztag.yaml # ready-to-paste HA package (rest_commands + scripts)
│ ├── ambient.yaml # ambient automations (belly/ears/nose) over the REST API
│ ├── entities.yaml # optional dashboard controls (sleep/nose/ears/belly) over REST
│ ├── proactive.yaml # Nabi "alive" — proactive companion (quips, briefing, notify)
│ ├── nabaztag_tasks.yaml # standing orders ("préviens-moi quand…") via Claude tools
│ └── rfid.yaml # RFID tag → action (remembers last tag; dispatches known ones)
├── README.md
└── LICENSE
https://github.com/ClaraVnk/nabaztag.server_address
to a hostname such as nabaztag.lan — not a raw IP: the bytecode
resolves the XMPP server by DNS, so an IP literal fails. (bootcode option:
ojn is the default and works.) Start the add-on.nabaztag.lan → <haos-ip> (UniFi "Local DNS Records", AdGuard/Pi-hole rewrite…).
Verify from any device: nslookup nabaztag.lan → <haos-ip>.NabaztagXX Wi-Fi, open 192.168.0.1, set Violet Platform
to http://<haos-ip>/vl (the IP is fine here — boot/locate don't need DNS),
then update and start.serving bootcode → … → bound and idle — ready for commands. Optionally drop home-assistant/nabaztag.yaml into /config/packages/.Rabbit on its own VLAN/subnet? Allow it through the firewall to the HAOS