Inspiration

Every pet is an individual. Even two cats belonging to one owner—and even sharing the same name—have distinct observations, histories and needs. A water bowl being refilled is evidence of a refill, not proof of drinking. CARLi Home explores a personal AI that respects those distinctions.

What it does

CARLi Home retains pet-specific, persistent observation memories and retrieves only the authorized pet's evidence. On an owner-requested reflection, the pet-scoped prototype calls NVIDIA Nemotron 3 Nano via Nebius Token Factory. It validates the model's reminder against specific observation UUIDs and conservative non-diagnostic rules. This creates a pending proposal; a different pet cannot approve it (HTTP 403). The owner must explicitly approve before a reminder and auditable receipt are stored. The reminder is RECORDED_NOT_SCHEDULED, not a push notification.

How we built it

Python standard-library HTTP services; SQLite persistence; unique pet UUIDs; isolated memory/proposal/receipt records; offline-provisioned synthetic test identities; SHA-256 canonical proposal digests and replay protection; HTTPS chat-completions to Nebius Token Factory running nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B. The earlier Pika journal is a warm UI prototype; pet-scoped live inference and the reviewer walkthrough are separate local testing flows, not a deployed multi-user service.

Evidence of a working prototype

On Windows, Build 6.5 passed 104 automated tests. In a separate real provider test (Build 6.3), Nemotron returned HTTP 200 in approximately 1,195 ms; its proposal cited only Pet A's observation UUID. Attempted approval against Pet B returned 403. Explicit owner approval created one Pet A reminder, zero Pet B reminders, and a receipt persisted across SQLite reconnection.

The repository also includes judge_walkthrough65.py, an independently reproducible, no-key, offline synthetic walkthrough of per-pet isolation and approval. That walkthrough does not make a Nebius call; live_gate63.py does, using an independently authorized API key. The current prototype has no production user login and is not clinical advice. Localhost endpoints must not be publicly exposed.

Challenges

Nemotron reasoning-mode output initially exhausted the output budget before returning final text. We used a model-appropriate non-thinking request for a short constrained reminder, retained fail-closed response validation, and tested actual provider output. We also fixed SQLite connection lifetime handling for Windows test cleanup.

What we learned

Personal AI needs more than a persistent chat history: explicit identity boundaries, evidence provenance, bounded actions, approval, and auditable outcomes. Pet names are not secure identity keys.

Significant work during the contest period

CARLi added a live Nemotron call through Nebius, persistent governed reminders and receipts, the emotional Pika memory UI, per-pet SQLite storage, owner-scoped synthetic HTTP gates, real pet-scoped inference and cross-pet denial tests, and a no-key offline reviewer walkthrough. Historical components and production CAIOS systems are not claimed as newly developed here.

Nebius / NVIDIA developer feedback

Nebius Token Factory enabled us to call a real NVIDIA Nemotron model without operating GPU hosting. The biggest integration friction was reasoning-mode responses that consumed the output budget without final text. Clearer model-specific documentation of thinking controls, finish reasons and final response shapes would improve iteration. We used prompt and runtime configuration with deterministic citation checks—not fine-tuning.

Reviewer access

Source and test build: https://github.com/freshcanibowl/carli-home-nebius-2026/tree/feat/build65-judge-access (commit c271d6c8de7736d6a08b31e518b397cbc8912fbc). Run py judge_walkthrough65.py with Python 3.11+ for the offline synthetic demonstration. Live inference requires a separately authorized NEBIUS_API_KEY; no secret is bundled.

Demo video and final hackathon submission are pending.

Built With

Share this project:

Updates