woolroom · open-source engine from paws
The engine behind
a pet that stays.
woolroom extracts the reusable room runtime from paws: self-hosted state, mood, memory, daily outings, and anniversaries moving on an explicit clock—even when nobody is looking. A data-only species pack supplies identity and voice.
The demo guest view is read-only. No account, key, or install.

Light, mood, memory, and the next response come from explicit state. An optional, capped LLM lane can add prose; the pet remains itself without one.
Read the design rationale →- OffscreenThe room keeps time while every tab is closed
- SQLiteThe whole durable life fits in one file
- Zero keysThe rule-driven brain needs no model call
- MITRun it, fork it, and keep the data on your disk
The relationship is the product
One pet. Two people. No feed.
A person opens the room through an invite link, names their lamp, and meets the same animal on every screen. There are no streaks, notifications, scores, or meters to manufacture a return visit.
The server owns time and state, WebSockets keep the room in sync, and the household owns the SQLite file. Absence is allowed; the room does not stop existing when attention moves elsewhere.
woolroom-packs · species authoring
Change the species,
not the engine.
A pack is data, never code: YAML plus one SVG. The loader validates it behind fail-closed gates at boot, so authors can shape temperament, coats, voice, and habits without forking the room.
- 01
Start from a known-good animal
The scaffold copies the Pebble example and renames every identity-bearing file stem.
- 02
Draw and write
One SVG supplies the figure. YAML supplies coats, temperament, voice, phrases, and habits.
- 03
See it, then check it
Render every coat and pose on one review board, then run strict lint before sharing the repo.
Woolpack is live on PyPI with one bundled Pebble reference. With Python 3.11+ and uv, start with uvx woolpack new mole --author "Your Name" --license MIT; the public pack index is maintained-lite.
V1 boundaries
A home is not a platform.
- One process and one household per instance; there is no multi-tenant mode.
- Packs are local directories loaded at boot, not executable plugins or remote downloads.
- Self-hosting means operating the container and keeping its SQLite file backed up.
- The project is maintained-lite: thoughtful responses, not an instant support promise.
From the same workshop
Other things you can install.
Smaller tools from the same practice: explicit contracts, inspectable state, and a bias toward software that tells the truth about what it is.
- Published · PyPI
ThreadLang
A compact language and runtime for bounded, traceable LLM workflows.
Open package ↗ - Beta · PyPI
agent-usage-manager
Process-level visibility and a kill switch for headless AI agents.
Open package ↗ - Early · Source
clilane
A lightweight background manager for CLI agents and terminal work.
Open package ↗
Try the lineage
Built from a real room, opened for yours.
paws is the original private household running this design. woolroom is the public engine and demo species, extracted without the private pet, household data, or deployment history.