project file / jul–sep 2026
Porto
A phone-side MCP server that lets AI agents request bounded device capabilities, with permission decided on the phone.
- my role
- Co-developer, Blue Orchid Society
- status
- iOS release candidate under verification
- field
- Mobile / agents
- tools
- React Native · TypeScript · Swift · MCP · Cloudflare Workers · Durable Objects
01 / the problem
Why this exists
Remote agents can be useful on a phone, but a broad connection to personal data is the wrong starting point. Porto makes each capability legible to the person holding the device and keeps the phone in control of access.
02 / the build
What I worked on
Co-developed the React Native app and an outbound WebSocket connection to a Cloudflare Worker and Durable Objects relay. The phone does not need an inbound port or a mandatory Porto account.
Built and hardened scoped bearer access, phone-side approvals, encrypted capability leases, audit receipts, queued operations, replay cursors, and time-bounded results.
Added a Swift macOS companion for encrypted pairing and local credential storage, plus an OpenClaw integration and release checks for iOS testing.
03 / engineering notes
Choices that mattered
- A request describes its scope and purpose before a sensitive phone action runs. The agent never receives unrestricted access to the photo library, contacts, or calendar.
- The relay carries requests and results; the phone remains the authority for permissions. Durable queues handle disconnections without silently repeating an action.
04 / reflection
What I took away
The hardest part was not exposing a tool. It was making connection loss, consent, and revocation understandable in the same flow. Native and background behavior still needs signed-device verification before a broad release claim.