feat: implement web server mode#216
Merged
Merged
Conversation
Contributor
Author
|
Sessions, chat history, submitting prompts and getting responses work -- which is good enough for me, but there may be other rough corners. |
|
Hi, @123vivekr , could you take a look? This feature really matters for remote development. #260 |
|
Super excited for this 🥹 |
Member
|
Awesome! Before I go forward, can you look into the merge conflicts and update the PR? |
RB3rg
approved these changes
Oct 1, 2025
Contributor
Author
Yep, hopefully this weekend. |
Add comprehensive web server functionality to Claudia, enabling Claude Code execution from mobile browsers while maintaining feature parity with the desktop Tauri app. Enable users to access Claude Code from mobile devices via web browser, addressing the limitation of desktop-only access. This allows for: - Mobile development workflows - Remote access to Claude Code functionality - Browser-based Claude execution without desktop app installation - Cross-platform compatibility - **Axum web server** with WebSocket support for real-time streaming - **Dual-mode event system** supporting both Tauri desktop and DOM web events - **Session management** with HashMap-based tracking of active WebSocket connections - **Process spawning** for actual Claude binary execution with stdout streaming - **REST API** mirroring all Tauri command functionality - `web_server.rs`: Main server w/ WebSocket handlers and REST endpoints - Real Claude binary execution with subprocess spawning - WebSocket message streaming for real-time output - Comprehensive session state management - CORS configuration for mobile browser access - `apiAdapter.ts`: Environment detection and unified API layer - `ClaudeCodeSession.tsx`: Enhanced with DOM event support for web mode - WebSocket client with automatic failover from Tauri to web mode - Event dispatching system compatible with existing UI components - **Build system**: `just web` command for integrated build and run - **Binary detection**: Bundled binary first, system PATH fallback - **Message protocol**: JSON-based WebSocket communication - **Event handling**: Session-scoped and generic event dispatching - **Error handling**: Comprehensive error propagation and UI feedback - ✅ Basic WebSocket streaming and session management - ✅ REST API endpoints for all core functionality - ✅ Event handling compatibility between Tauri and web modes - ✅ Error handling and WebSocket connection management - ✅ Process spawning and output streaming - ✅ Comprehensive debugging and tracing - Session-scoped event dispatching needs refinement for multi-user scenarios - Process cancellation requires additional implementation - stderr handling not yet fully implemented - Limited to single concurrent session per connection 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
- Remove unused tauriOpen import in ClaudeCodeSession - Replace invoke() with apiCall() in api.ts for web compatibility - Fix unused variable warnings These changes ensure the frontend builds correctly with the new web server mode while maintaining compatibility with Tauri desktop mode. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
- Pin image crate to 0.25.1 to avoid edition2024 requirement from moxcms - Add missing installation_type field to ClaudeInstallation struct - Update Cargo.lock with compatible dependencies The moxcms-0.7.6 crate requires edition2024 which is not available in stable Rust 1.82. Pinning the image crate to 0.25.1 avoids this dependency while maintaining functionality. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
- Add /api/settings/claude/installations endpoint to web server - Implement list_claude_installations handler - Add 'just debug' command for troubleshooting Claude binary detection This fixes the HTTP 404 error when accessing Claude Installation settings in web mode. The debug command helps users verify their Claude installation is detected correctly. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
- Rename binary from claudia-web to opcode-web in Cargo.toml - Update all references in justfile (web commands) - Update console output messages in web_server.rs and web_main.rs - Update documentation in web_server.design.md This completes the project rename from Claudia to Opcode. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Contributor
Author
|
@123vivekr done. Give it a spin. I use nix, so I simply run nix-shell --run 'just web'. |
Member
|
Wow, awesome! I'll check it out today |
Member
|
Looks good! Thanks a lot. Merged 🚀 |
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.
🌐 Claudia Web Server Implementation
Add comprehensive web server functionality to Claudia, enabling Claude Code execution from mobile browsers while maintaining feature parity with the desktop Tauri app.
This makes it possible to use from a phone - something I find useful of Codex/Jules.
🎯 Objective
Enable users to access Claude Code from mobile devices via web browser, addressing the limitation of desktop-only access. This allows for:
🚀 Implementation Overview
Core Features
📁 Key Components
Backend Implementation
web_server.rsFrontend Implementation
apiAdapter.tsClaudeCodeSession.tsx🔧 Technical Details
Build & Deployment
just webcommand for integrated build and runArchitecture
✅ Completed Features
🔄 Outstanding Work
🚀 Getting Started
Prerequisites
Building and Running
Usage
🛠️ Development Notes
Event System
The dual-mode event system supports both Tauri's native event handling and DOM events for web browsers:
Session Management
WebSocket connections are tracked per session with automatic cleanup: