openpetswithchatandmcp/FEATURES.md

309 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# OpenPets Feature Inventory
This file is the current feature roll-up for this working fork of OpenPets.
It combines:
- the shipped baseline described in `README.md`
- the chat, memory, and prompt-window work from this implementation thread
- the curated MCP toolkit surface added in the desktop app
> Looking for an isolated view of only our additions? See:
> - [`FEATURES_OUR_CHANGES.md`](FEATURES_OUR_CHANGES.md)
> - [`README_OUR_CHANGES.md`](README_OUR_CHANGES.md)
> - [`PULL_REQUEST.md`](PULL_REQUEST.md)
## Desktop Companion Core
- Tray-first desktop companion app
- Desktop pet that can idle, react, wave, move, and speak
- Default pet plus installed non-default pets
- Per-agent pet routing when integrations request a specific installed pet
- Manual pet dismissal with lease-aware recovery rules
- Native right-click pet context menu
- Always-on-top pet window with click-through background behavior
- Drag support with mouse passthrough recovery for Windows/Linux edge cases
- Adaptive pet scale setting (continuous slider from 0.16x to 10x in Settings)
- Reset default pet position
- Launch at login support where the platform allows it
- Update checking against GitHub releases
- Open logs folder from the app
## Pet Packs And Gallery
- Built-in default pet
- Installed pet pack loading
- Local pet import from ZIP
- Local pet import from folder
- Codex pet import flow
- Pet catalog browsing
- Pet preview thumbnails and spritesheets
- Default pet selection
- Pet gallery linkout
## Reactions And Speech
- Explicit pet speech bubbles
- Reaction-only decorative bubble messages
- Reaction animation mapping
- User-configurable reaction-to-animation overrides
- Longer display duration for longer messages
- Separate handling for finite reaction animations vs visible bubble lifetime
- Safer speech rules for agent-driven bubble content
- Bubble behavior that avoids showing code, logs, URLs, paths, or secrets in normal integration speech
## Virtual Pet Care
- Bundled `openpets.virtual-pet` plugin tracks hunger, energy, happiness, and affection
- Stats decay slowly while the app is running and recover when you feed, play, pet, or nap
- Status HUD appears only when summoned, so it never blocks the pet or chat
- Triple-click the pet to show the status HUD for 6 seconds
- Actions (feed, play, pet, nap) briefly display the HUD after updating stats
- Automatic nudges when a stat gets low
## Floating Chat Surface
- Double-click the pet to open a floating prompt window
- Floating prompt window stays always on top
- Compact prompt-first mode at 96px height; expanded editor/history mode at 280px
- Prompt bar is sized for 2–3 lines of text
- Resizable corner grip with size remembered per mode
- Prompt window keeps a low desktop footprint
- Minimal top-bar controls with small symbol buttons
- Editor panel toggle
- History toggle
- New chat action
- Settings shortcut
- Close action
- Copy chat support
- Styled conversation history list with per-entry role badges and timestamps
- Scrollable message entries with distinct user/assistant/system/error theming
- Enter sends
- Ctrl+Enter or Cmd+Enter inserts newline
- Inline error presentation inside the prompt surface
- No terminal required for normal chat usage
## Chat History
- Full conversation history stored and persisted to disk across app restarts
- History survives closing and reopening the floating chat window
- History stays in the prompt/editor surface rather than in the pet bubble
- Pet bubble only shows one assistant reply at a time
- Per-entry styling with role badges (You / Pet / System / Error) and timestamps
- **Multi-conversation support**: each conversation is a separate thread with its own messages
- **Conversation list** accessible from the History button in the floating chat window
- **Editor button** shows the current conversation's message list
- Create, switch, and delete conversations from the floating chat window
- Auto-generated conversation titles from the first user message
- Old conversations are preserved when starting a new chat
## OpenAPI And BYOK Chat
- Main-process OpenAPI chat service
- User-entered prompt stays out of the pet renderer
- User-entered prompt stays out of logs unless logging is genuinely necessary elsewhere
- API key or token entry in Settings
- Secure storage with Electron `safeStorage` when available
- Plain local fallback when platform encryption is unavailable
- Model selection in Settings
- OpenAPI-compatible endpoint override in Settings
- Built-in OpenAI endpoint default
- BYOK endpoint support for other compatible providers or local gateways
- Endpoint normalization and validation
- Localhost-only allowance for plain `http`
- Automatic `responses` plus `chat/completions` route selection for broader provider compatibility
- Preset-based provider setup
- Compact single credential entry surface that adapts to the selected provider preset
## Current Provider Presets
- OpenAI
- OpenRouter
- Azure template
- LiteLLM local
- vLLM local
- Custom local template
- Generic HTTPS template
## Pet Character And Personality
- System-prompt style pet character field in General Settings
- Character prompt persists in app state
- Character prompt is applied on future assistant replies
- Base instructions toggle — optionally include or exclude the default OpenPets behavior instructions in every chat
- Theme setting shared between control center and floating chat window
- Auto theme mode
- Light theme mode
- Dark theme mode
- Dark theme tuned toward graphite-style surfaces instead of blue-heavy dark UI
## Memory System
- Local-first persistent OpenPets memory store
- Main-process memory writer
- In-memory retrieval during chat
- On-disk persistence for durable memories
- Human-inspectable memory mirror files
- Relevance-based retrieval into future prompts
- Explicit memory capture patterns such as `remember ...`
- Preference, identity, fact, and note style memory kinds
- Importance weighting
- Tags
- Forget/delete support
- In-app memory viewer in Settings with search, edit, and delete
- **Chat history memory**: cross-conversation message search injects relevant past conversation excerpts into the system prompt
- Two separate databases: explicit memories (`openpets-memory.json`) and chat history (`openpets-chat-history.json`)
## OpenPets MCP Server
- Local IPC discovery file and per-run token flow
- MCP server for OpenPets desktop control
- Explicit target-pet lease routing
- Default-pet fallback when a requested pet is unavailable
- `openpets_status`
- `openpets_react`
- `openpets_say`
- `openpets_memory_list`
- `openpets_memory_search`
- `openpets_memory_store`
- `openpets_memory_forget`
## Agent Integrations
- Claude Code integration
- OpenCode integration
- Cursor integration
- Pi extension guidance
- Global setup preview/state for Claude
- Global setup preview/state for OpenCode
- Global setup preview/state for Cursor
- Managed Claude memory instructions
- Managed Claude hook install/uninstall
- OpenCode instruction file support
- OpenCode plugin support
- Cursor MCP config preview
- Cursor rules preview
- Pet routing per supported integration
- Published package / bundled / local command modes for supported integrations
- Command path overrides for relevant integrations
## Vanilla Chat MCP Tools
- Multi-select MCP tool activation inside the floating chat window
- Tiered tool browser (Starter, Terminal & Systems, Advanced)
- Save & Activate / Deactivate All controls
- Tools run through an internal stdio MCP client in the main process
- Supported tools: filesystem, terminal, memory, fetch-web, sequential-thinking, playwright, git, github, docker, sqlite
## Curated MCP Toolkit Surface
The control-center Integrations page now also includes a curated **MCP Toolkit** panel. This does not pretend to be a full unsafe one-click installer for the whole MCP ecosystem. Instead, it provides a practical, permission-aware reference surface with copyable snippets and docs links.
### Starter Stack In The Toolkit
- Filesystem
- Git
- GitHub
- Playwright
- Browser Use
- SQLite / PostgreSQL guidance
- Memory
- Fetch / Web
- Sequential Thinking
- Docker MCP Toolkit
### Terminal And Systems Layer In The Toolkit
- Shell / Terminal guidance
- Process & Logs guidance
- System Info guidance
- SSH guidance
- Package Manager guidance
- Tmux guidance
### Later / Advanced Layer In The Toolkit
- Kubernetes / Cloud guidance
- CI / CD guidance
- Ghidra guidance
- Binary Analysis guidance
- Network Analysis guidance
### Toolkit UX
- Toolkit card in Integrations
- Explicit `Manual Setup` vs `Persistent Full Access` choice
- Command source labels clarify where tools come from (Stable release, Shipped with app, Local build)
- Install choice descriptions clarify manual vs persistent access
- Tiered MCP family browser
- Per-tool rationale
- Per-tool VectorShell-fit notes
- Per-tool permission-boundary notes
- Copyable install/config snippets where they are stable enough to recommend
- External docs opening through Electron
- Persistent host install bundles for supported hosts
- `Install Now` actions for supported Claude Code and Codex CLI baselines
- Installed/skipped MCP result reporting inside the toolkit UI
- Current automatic baseline: Filesystem, Playwright, Memory, Context7 / Docs, Sequential Thinking, plus Fetch / Web and Browser Use when `uvx` is available
## Plugins
- Plugin catalog
- Installed plugin inspection
- Enable/disable plugins
- Local plugin loading
- Catalog plugin install/update/remove
- Plugin configuration schema rendering
- Plugin command execution
- Plugin status display
## Dashboard And Control Center
- Dashboard overview
- Pet count
- Plugin health summary
- Update status summary
- Reaction mix charting
- Top companion activity
- Activity counters
- Settings view
- Pets view
- Plugins view
- Integrations view
- Persistent route handling inside the control center window
## Logging And Diagnostics
- App log file
- Previous log rollover
- Redaction of token-like values
- Verbose dev logging toggle through environment
- IPC request logging
- Lease acquisition logging
- Pet show lifecycle logging
- Renderer console logging capture
## Packaging And Distribution
- Desktop packaging through Electron Builder
- Windows packaging support
- Linux AppImage packaging support
- Additional Linux targets in config
- Packaged preload scripts for control center, pet window, prompt window, and plugin surfaces
- Packaged official plugins as extra resources
- Packaging contract checks
## Safety And Boundary Rules
- Prompt text is kept out of the pet renderer
- Automatic agent speech is decorative and best effort
- OpenPets speech bubbles are not meant to carry code, logs, URLs, file paths, or secrets
- Tooling guidance in the MCP Toolkit emphasizes minimal permissions
- Docker MCP Toolkit is recommended as an isolation layer when the third-party MCP ecosystem feels too uneven
## Practical Summary
This fork now gives you three layers at once:
- a playful desktop pet
- a floating always-on-top chat surface with BYOK and memory
- a curated MCP/workbench surface for building a serious developer stack around the pet instead of only driving it from a terminal