Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
06318ee
MAESTRO: Add /web/* route namespace for web interface
pedramamini Nov 27, 2025
c95380f
MAESTRO: Add WebSocket upgrade handler for web clients at /ws/web
pedramamini Nov 27, 2025
f541b3f
MAESTRO: Add optional PIN/token authentication for web interface
pedramamini Nov 27, 2025
d40d36a
MAESTRO: Broadcast session state changes to connected web clients
pedramamini Nov 27, 2025
14ff05d
MAESTRO: Send current theme on initial WebSocket connection
pedramamini Nov 27, 2025
55761ee
MAESTRO: Broadcast theme changes to connected web clients
pedramamini Nov 27, 2025
138ba5a
MAESTRO: Add rate limiting for web interface endpoints
pedramamini Nov 27, 2025
e7e037f
MAESTRO: Implement /api/sessions endpoint to return actual session data
pedramamini Nov 27, 2025
65ca472
MAESTRO: Implement /api/session/:id endpoint for detailed session data
pedramamini Nov 27, 2025
90cc71e
MAESTRO: Implement /api/session/:id/send POST endpoint for sending co…
pedramamini Nov 27, 2025
b3f1ba6
MAESTRO: Implement /api/session/:id/interrupt POST endpoint for sessi…
pedramamini Nov 27, 2025
72b8478
MAESTRO: Implement /api/theme GET endpoint for current theme configur…
pedramamini Nov 27, 2025
98aebe0
MAESTRO: Extract theme types to shared location for web interface
pedramamini Nov 27, 2025
2ce759d
MAESTRO: Create ThemeProvider component for web interface
pedramamini Nov 27, 2025
da95e0c
MAESTRO: Create CSS custom properties generator for web interface the…
pedramamini Nov 27, 2025
b2bdd0b
MAESTRO: Create reusable Button component for web interface
pedramamini Nov 27, 2025
6f82354
MAESTRO: Create reusable Input and TextArea components for web interface
pedramamini Nov 27, 2025
ed1b063
MAESTRO: Create reusable Badge component for web interface status ind…
pedramamini Nov 27, 2025
736e0ae
MAESTRO: Create reusable Card component for web interface
pedramamini Nov 27, 2025
8d04274
MAESTRO: Create useWebSocket hook for web interface connection manage…
pedramamini Nov 27, 2025
1c21f7b
MAESTRO: Create useSessions hook for real-time session state management
pedramamini Nov 27, 2025
5595157
MAESTRO: Create separate Vite config for web interface build
pedramamini Nov 27, 2025
a22c2b2
MAESTRO: Add npm run build:web script for web interface bundling
pedramamini Nov 27, 2025
1ad7daf
MAESTRO: Integrate web build into main build process
pedramamini Nov 27, 2025
304544e
MAESTRO: Serve built web assets from Fastify static handler
pedramamini Nov 27, 2025
037f55e
MAESTRO: Configure code splitting for mobile vs desktop web bundles
pedramamini Nov 27, 2025
3769944
MAESTRO: Create mobile entry point with utilities and configuration
pedramamini Nov 27, 2025
7cc54a8
MAESTRO: Add mobile app shell with dynamic connection status header
pedramamini Nov 27, 2025
591b1ba
MAESTRO: Add comprehensive responsive viewport meta tags for mobile b…
pedramamini Nov 27, 2025
f6226a7
MAESTRO: Add PWA manifest for Add to Home Screen support
pedramamini Nov 27, 2025
39155a4
MAESTRO: Add service worker for PWA offline capability
pedramamini Nov 27, 2025
600b95d
MAESTRO: Add pull-to-refresh functionality for mobile session list
pedramamini Nov 27, 2025
55b2bd0
MAESTRO: Add horizontal scrollable session pill bar for mobile web
pedramamini Nov 27, 2025
f651da6
MAESTRO: Add long-press session info popover for mobile session pills
pedramamini Nov 27, 2025
5c52949
MAESTRO: Add collapsible group headers to mobile session pill bar
pedramamini Nov 27, 2025
73daa76
MAESTRO: Add All Sessions view with larger cards for mobile web
pedramamini Nov 27, 2025
7c03963
MAESTRO: Add sticky bottom CommandInputBar for mobile web interface
pedramamini Nov 27, 2025
b3b1a24
MAESTRO: Add large touch-friendly textarea input for mobile command bar
pedramamini Nov 27, 2025
496dd32
MAESTRO: Add mode toggle button (AI/Terminal) to mobile command input…
pedramamini Nov 27, 2025
67d3ec8
MAESTRO: Add interrupt button (red X) to mobile command input bar
pedramamini Nov 27, 2025
7f3c934
MAESTRO: Add auto-expanding textarea for mobile command input (up to …
pedramamini Nov 27, 2025
685b4ce
MAESTRO: Add command history drawer with swipe-up gesture for mobile web
pedramamini Nov 27, 2025
cb1d3f5
MAESTRO: Add recent command chips for quick-tap reuse in mobile web
pedramamini Nov 27, 2025
afcce6c
MAESTRO: Add slash command autocomplete popup for mobile web
pedramamini Nov 27, 2025
fb4d5a1
MAESTRO: Add haptic feedback for mobile web command input
pedramamini Nov 27, 2025
75b4c71
MAESTRO: Add session status banner for mobile web interface
pedramamini Nov 27, 2025
71c3f25
MAESTRO: Add cost tracker to mobile web session status banner
pedramamini Nov 27, 2025
317d14a
MAESTRO: Add context window usage bar to mobile web session status ba…
pedramamini Nov 27, 2025
166523d
MAESTRO: Add collapsible last response preview to mobile web session …
pedramamini Nov 27, 2025
cd04578
MAESTRO: Add tap-to-expand full-screen response viewer for mobile web
pedramamini Nov 27, 2025
bd25db5
MAESTRO: Add share button to copy last response to clipboard in mobil…
pedramamini Nov 27, 2025
ab8b981
MAESTRO: Add syntax highlighting for code blocks in mobile web respon…
pedramamini Nov 27, 2025
9885a23
MAESTRO: Add copy button for each code block in mobile web response v…
pedramamini Nov 27, 2025
9c73c76
MAESTRO: Add swipe left/right navigation between responses in mobile …
pedramamini Nov 27, 2025
b44fe93
MAESTRO: Add pinch-to-zoom for code readability in mobile web respons…
pedramamini Nov 27, 2025
ea2df05
MAESTRO: Add notification permission request on first visit for mobil…
pedramamini Nov 27, 2025
14f1299
MAESTRO: Add push notifications for AI response completion in mobile web
pedramamini Nov 27, 2025
cfd8c15
MAESTRO: Add unread response badge count for mobile web PWA
pedramamini Nov 27, 2025
89517ac
MAESTRO: Add voice input button for speech-to-text in mobile web
pedramamini Nov 27, 2025
94fc8d9
MAESTRO: Add quick actions menu for mobile web send button
pedramamini Nov 27, 2025
da66526
MAESTRO: Add swipe gestures for common actions in mobile web
pedramamini Nov 27, 2025
8d5abc7
MAESTRO: Add offline queue for commands typed while disconnected
pedramamini Nov 27, 2025
6f2f414
MAESTRO: Add connection status indicator with retry button for mobile…
pedramamini Nov 27, 2025
f55230d
MAESTRO: Add device color scheme preference support for mobile web
pedramamini Nov 27, 2025
bbf6612
feat: Mobile-first remote access with QR codes and live sessions
pedramamini Nov 28, 2025
c444b06
refactor: Global live mode toggle with improved security
pedramamini Nov 28, 2025
0ecec1c
refactor: Web interface as true remote control with code deduplication
pedramamini Nov 28, 2025
dd4b486
ironed out the issues on AI/CLI remote control
pedramamini Nov 28, 2025
fad60f0
feat: Sync custom AI commands to mobile and improve remote control UX
pedramamini Nov 28, 2025
d11a142
fix: Filter raw PTY output from web broadcast and support custom comm…
pedramamini Nov 28, 2025
eb24ccd
fix: React 18 StrictMode compatibility and remote slash command support
pedramamini Nov 28, 2025
b97aee9
feat: Mobile UI improvements and live session disconnect handling
pedramamini Nov 28, 2025
0eaa2be
feat: On-demand web server and mobile UI improvements
pedramamini Nov 28, 2025
c27af28
we have a functional remote control
pedramamini Nov 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ Node.js backend with full system access:
|------|---------|
| `index.ts` | App entry, IPC handlers, window management |
| `process-manager.ts` | PTY and child process spawning |
| `web-server.ts` | Fastify HTTP/WebSocket server (port 8000) |
| `web-server.ts` | Fastify HTTP/WebSocket server for mobile remote control |
| `agent-detector.ts` | Auto-detect CLI tools via PATH |
| `preload.ts` | Secure IPC bridge via contextBridge |
| `utils/execFile.ts` | Safe command execution utility |
Expand Down Expand Up @@ -272,7 +272,6 @@ Manages all application settings with automatic persistence.

**What it manages:**
- LLM settings (provider, model, API key)
- Tunnel settings
- Agent settings (default agent)
- Shell settings (default shell)
- Font settings (family, size, custom fonts)
Expand All @@ -284,7 +283,6 @@ Manages all application settings with automatic persistence.

**Current Persistent Settings:**
- `llmProvider`, `modelSlug`, `apiKey`
- `tunnelProvider`, `tunnelApiKey`
- `defaultAgent`, `defaultShell`
- `fontFamily`, `fontSize`, `customFonts`
- `activeThemeId`
Expand Down
29 changes: 19 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ Download the latest release for your platform from the [Releases](https://github
- 📝 **Scratchpad** - Built-in markdown editor with live preview for task management
- ⚡ **Slash Commands** - Extensible command system with autocomplete
- 📬 **Message Queueing** - Queue messages while AI is busy; they're sent automatically when ready
- 🌐 **Remote Access** - Built-in web server with optional ngrok/Cloudflare tunneling
- 🌐 **Mobile Remote Control** - Access sessions from your phone with QR codes, live sessions, and a mobile-optimized web interface
- 💰 **Cost Tracking** - Real-time token usage and cost tracking per session

> **Note**: Maestro currently supports Claude Code only. Support for other agentic coding tools may be added in future releases based on community demand.
Expand Down Expand Up @@ -236,18 +236,27 @@ Settings are stored in:

## Remote Access

Maestro includes a built-in web server for remote access:
Maestro includes a built-in web server for mobile remote control:

1. **Local Access**: `http://localhost:8000`
2. **LAN Access**: `http://[your-ip]:8000`
3. **Public Access**: Enable ngrok or Cloudflare tunnel in Settings
1. **Automatic Security**: Web server runs on a random port with an auto-generated security token embedded in the URL
2. **QR Code Access**: Scan a QR code to connect instantly from your phone
3. **Global Access**: All sessions are accessible when the web interface is enabled - the security token protects access

### Enabling Public Tunnels
### Mobile Web Interface

1. Get an API token from [ngrok.com](https://ngrok.com) or Cloudflare
2. Open Settings > Network
3. Select your tunnel provider and enter your API key
4. Start the tunnel from the session interface
The mobile web interface provides:
- Real-time session monitoring and command input
- Device color scheme preference support (light/dark mode)
- Connection status indicator with automatic reconnection
- Offline queue for commands typed while disconnected
- Swipe gestures for common actions
- Quick actions menu for the send button

To access sessions from your phone:
1. Click the "OFFLINE" button in the header (next to the MAESTRO logo) to enable the web interface
2. The button changes to "LIVE" and shows a QR code overlay
3. Scan the QR code or copy the secure URL to access all your sessions remotely
4. Click "LIVE" again to view the QR code, or toggle off to disable remote access

## Contributing

Expand Down
Loading