Companion API — allow plugins/skills to control the speech bubble and run a separate model u can talk to and configure
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Problem Statement
Summary
The buddy coding companion currently has a speech bubble
that's entirely controlled by the Claude Code client. There's no way for plugins, skills,
or hooks to programmatically write to it or route user input to a separate model through it.
Proposed Solution
## Feature Request
Expose a Companion API that enables:
### 1. Speech bubble write access
Let plugins/skills/hooks send text to the companion's speech bubble programmatically.
Something like a CompanionSay tool or a write target that renders in the bubble UI
instead of the main conversation.
### 2. Slash command routing to a separate model
Allow a slash command (e.g. /<companion_name> <message>) to route the user's message to a
different model (e.g. Haiku) with its own system prompt and conversation history —
completely isolated from the main model's context window. The response would appear
in the speech bubble, not in the main chat.
### 3. Persistent companion memory
Give the companion its own persistent storage (e.g. ~/.claude/companion/) so it can
maintain conversation history and personality across sessions without polluting the
main model's memory system.
### 4. Full context isolation
Messages to/from the companion should not consume tokens in the primary model's context
window. The main model should be able to continue working on a task uninterrupted while
the user chats with the companion on the side.
(Opus) works on the real task.
Alternative Solutions
/quill slash command — a custom skill that captures your message 2. Routes to Haiku via a background subagent with Quillnap's personality 3. Persistent memory stored in ~/.claude/quillnap/
systemMessage injection via hooks — this shows up as a system message in the transcript, not the bubble, but it IS visually distinct from the main model's output
It's not the dream (speech bubble, fully invisible to main context), but it's functional. The main model would see the system message in its context though — that's the tradeoff.
Priority
Low - Nice to have
Feature Category
Interactive mode (TUI)
Use Case Example
## Use Case
I use Claude Code with Opus for heavy development work. Sometimes I want to have a
quick side conversation — ask a casual question, get a second opinion, or just chat —
without derailing the main model's context or burning Opus tokens on small talk. A
Haiku-powered companion with its own bubble, memory, and context would make this possible.
Think of it like having a junior dev buddy sitting next to you while your senior dev
Additional Context
## Proposed UX
- User types
/quill hey what's upin the input box
- Message is routed to Haiku (or user-configured model) with ur buddies personality
- Response appears in the speech bubble
- Main model never sees the exchange
- Companion remembers past conversations across sessions
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗