Forking Guide
Build your own agent workflow on CC Pocket.
CC Pocket is a Flutter app plus a TypeScript Bridge Server for running local Codex and Claude sessions from mobile and desktop clients. This page explains the stack, boundaries, and extension points for forks.
Repository Shape
The repository is split around one protocol boundary: app clients talk to a self-hosted Bridge Server, and the Bridge talks to local agent tools and the user's workspace.
ccpocket/
├── apps/mobile/ Flutter app for mobile and desktop clients
├── packages/bridge/ TypeScript Bridge Server published as @ccpocket/bridge
├── docs/ GitHub Pages site and design notes
├── scripts/ release, development, and asset automation
├── functions/ Firebase Cloud Functions for push relay support
└── package.json npm workspace root
Bridge Server
The Bridge Server is the part most forks extend when they need new data sources, private APIs, or workflow-specific operations.
ws WebSocket server, HTTP endpoints, QR setup, mDNSFlutter App
The app is organized feature-first so forks can add or remove complete workflow surfaces without rewriting the transport layer.
Client stack
- Flutter and Dart
- iOS, iPadOS, Android, macOS, Linux, Windows
flutter_bloc/ Cubit,provider, and hooksauto_route, Freezed, JSON serialization
Device features
- WebSocket connection to Bridge
- QR scan, mDNS discovery, deep links, SSH host management
- Firebase Messaging, RevenueCat supporter flow, Shorebird updates
- Markdown, code highlighting, image picking, clipboard, drag and drop
Protocol Boundary
Features cross the app/Bridge boundary through explicit JSON messages. This keeps mobile, desktop, and future custom clients compatible with a self-hosted Bridge.
Client to Bridge
start,input,approve,rejectanswer,list_sessions,stop_sessionget_history,get_diff, git and file operations
Bridge to Client
system,assistant,stream_deltapermission_request,tool_result,statushistory,session_list,diff_result,error
What Forks Can Reuse
Workflow UI
Chat sessions, approvals, questions, prompt history, file preview, image viewing, and Git review surfaces.
Bridge Sync
Multi-session state, local history compatibility, reconnect behavior, offline recovery, and host setup.
Private Integrations
Add Jira, Linear, GitHub, or internal REST API panels where GUI workflows are faster than prompts or MCP.
Extension Pattern
A typical fork adds Bridge behavior first, then exposes it through a typed app service and a feature UI.
1. Add Bridge-side data access or operations in packages/bridge/src/
2. Add protocol types in parser.ts and routing in websocket.ts
3. Add a Flutter service stream or request method in apps/mobile/lib/services/
4. Add feature UI under apps/mobile/lib/features/<feature>/
5. Add focused tests for protocol parsing, Bridge behavior, and Flutter state
Platform Notes
macOS is the primary development environment. Linux and Windows desktop builds are available as experimental targets, and Windows Bridge support is handled on a best-effort basis unless a change is covered by tests and reporter-side validation.