Goal
Deliver OpenPets v4 as a conversational desktop pet. A user can speak or type to the pet, continue one shared conversation, invoke capabilities from enabled plugins, and receive responses based on authoritative plugin results.
Product direction lives in docs/openpets_v4.md. This epic tracks delivery; child issues own implementation details.
Architecture invariants
- The host owns conversation lifecycle, provider integration, microphone state, capability routing, transcript/history, and user-facing feedback.
- Plugins own domain state, scheduling, notifications, and registered capability handlers.
- Voice and chat share one canonical conversation/turn/event contract.
- Capability results are authoritative; the assistant never invents successful actions.
- Provider-specific wire formats never enter capability or conversation contracts.
- The model receives only registered capabilities from enabled, healthy plugins.
- No arbitrary plugin commands, filesystem, shell, or unrestricted SDK access is exposed.
- Personality affects communication only; it cannot override host rules, permissions, or capability outcomes.
- Focus and Reminder actions execute without confirmation in v4.
- Recent local history is bounded and user-deletable; v4 has no semantic long-term memory.
Delivery tracker
Foundation
Providers and prompting
Conversation adapters
Product surfaces and retention
Completion criteria
- Text chat and voice contribute to the same active conversation and transcript.
- Supported text, STT, and TTS providers can be independently selected.
- The generic voice path honors those independent selections.
- OpenAI Realtime is an optional optimized adapter, not the provider-neutral architecture.
- Focus Buddy and Quick Reminders work through natural-language requests using their existing domain state and scheduling.
- Talk starts from a pet-owned control or keyboard shortcut and can be muted or ended explicitly.
- The pet visibly represents listening, thinking, acting, speaking, missing information, success, and failure.
- Current-session transcript and bounded recent history are viewable and deletable.
- Required unit/contract tests, maintained docs, and real desktop validation are complete.
Coordination
Before starting a v4 child issue, claim it in an epic comment with its scope, assign it to yourself, and request a handoff if another developer has already claimed it. Link the focused PR to the child issue. After the PR is validated, reviewed, committed, pushed, and merged, comment here with the PR, delivered behavior, and validation; only then check the item off.
Out of scope
- Calendar capabilities
- Wake words or background listening
- Long-term semantic memory
- Arbitrary local-machine agent access
- A universal confirmation framework
- SDK capability progress streaming without a concrete v4 use case
Goal
Deliver OpenPets v4 as a conversational desktop pet. A user can speak or type to the pet, continue one shared conversation, invoke capabilities from enabled plugins, and receive responses based on authoritative plugin results.
Product direction lives in
docs/openpets_v4.md. This epic tracks delivery; child issues own implementation details.Architecture invariants
Delivery tracker
Foundation
Providers and prompting
Conversation adapters
Product surfaces and retention
Completion criteria
Coordination
Before starting a v4 child issue, claim it in an epic comment with its scope, assign it to yourself, and request a handoff if another developer has already claimed it. Link the focused PR to the child issue. After the PR is validated, reviewed, committed, pushed, and merged, comment here with the PR, delivered behavior, and validation; only then check the item off.
Out of scope