crates
The portable Rust core of Whiskers, as small crates with no user interface. Each platform shell (the Kotlin and Compose app on the Fire tablet, later the parents' app) draws and listens; everything else lives here. The shape is the estate's "one Rust core, native shells".
| Crate | What |
|---|---|
whiskers-core | The conversation pipeline, the ports it runs through (Model, Guard, Log, Clock) and the log format. |
whiskers-gateway | Model over the Anthropic Messages API, reached through an operator-run gateway. |
whiskers-pet | How the cat behaves: gaze, poke, dizzy, sleep. No drawing. |
whiskers-art | The cat's drawing and motion as data: the grey cat in every mood, drawn by the website and the app from the same definition. |
whiskers-guard | What Jev is asked about a message and what the answer means; the tablet's client. |
whiskers-ports | The backend's interface in Whiskers' own words: hubs that merge, the journal, pictures, the allowance, the judge, the voice, the thinker, secrets, a clock. Builds for wasm. |
whiskers-service | What the service does with a request, generic over those ports. Plain request in, plain response out. Builds for wasm. |
whiskers-conformance | The in-memory adapter of the ports, and the suite of contract laws every adapter must pass. |
whiskersd | The native adapter: files, ureq and a Jev thread behind the ports, served over HTTP. Holds the keys and answers the client. |
whiskers-cli | The same pipeline from a terminal, for trying the persona against the real services. |
whiskers-engine | The cat, the conversation, the parents' view and the voice allowance in one Send + Sync object. |
whiskers-ffi | The UniFFI boundary for Kotlin; mirrors the engine, no logic. |