feat: wire MCP bridge, OpenAI routing, and persistent voice agent#1
Open
rapdev-turner wants to merge 2 commits intomainfrom
Open
feat: wire MCP bridge, OpenAI routing, and persistent voice agent#1rapdev-turner wants to merge 2 commits intomainfrom
rapdev-turner wants to merge 2 commits intomainfrom
Conversation
- StdioTransport: add env parameter so MCP server subprocesses inherit
the correct credentials from Claude Code config
- mcp/claude_bridge.py: new module that reads ~/.claude/settings.json and
spawns configured MCP servers (Slack, GitHub, Apple) as native tools
- jarvis_voice.py: full rewrite as in-process persistent OrchestratorAgent
- conversation history maintained across all turns in a session
- SOUL.md + USER.md injected as system prompt at startup
- Obsidian vault context retrieved semantically per query
- MCP tools loaded at startup (--no-mcp flag to skip)
- --model flag for runtime model selection (claude-sonnet-4-6 default,
gpt-4o when OPENAI_API_KEY is present)
- Replace hasattr function-attribute state with module-level None sentinels in jarvis_voice.py (cleaner lazy init pattern) - Replace print() calls with logger.info/warning in claude_bridge.py (library code must not write to stdout) - Add StdioTransport env parameter tests: verify vars reach subprocess, verify default-None backward compatibility - Add full test suite for claude_bridge: config loading, merging, missing/malformed files, tool discovery, failure isolation, env passthrough - Add pytest to dev dependencies
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
src/openjarvis/mcp/claude_bridge.pyreads~/.claude/settings.jsonand spawns configured MCP servers (Slack, GitHub, Apple) as subprocesses viaStdioTransport, exposing their tools natively to any agentStdioTransport: addenvparameter so MCP servers inherit the correct credentials at spawn timejarvis_voice.py: full rewrite as an in-process persistentOrchestratorAgentSOUL.md+USER.mdinjected as system prompt at startup--modelflag for runtime model selection (Claude default, GPT-4o whenOPENAI_API_KEYis present)--no-mcpflag to skip MCP server startup for faster iterationTest plan
uv run python jarvis_voice.py --no-mcp— verifies agent initializes with Claude, vault retrieval, and profile toolsuv run python jarvis_voice.py— verifies Slack, GitHub, Apple MCP servers connect and report tool counts on startup~/.openjarvis/USER.mdis modified viauser_profile_manageuv run python jarvis_voice.py --model gpt-4owithOPENAI_API_KEYset — verifies OpenAI routing