OpenOx
Zi (@ziyzhu)
A bit about me
I like to play tennis 🎾
I wanted to become really good,
like really good.
Coaches, trainers, books, videos, ...
None worked, really
Until I played for two weeks straight,
two hours every day
I just gotta play more
It's a pain in the a**
to find courts
I decided to solve it once and for all
so I can play more
How does this have anything
to do with systems?
I discovered something
Website interactions need to run on my phone.
What if I could do this for everything else?
No longer limited by UI, and much faster.
Requirement 1
Connect to anything
Daily services
Google
Gmail
Outlook
Amazon
Airbnb
DoorDash
Instagram
Facebook
LinkedIn
Xiaohongshu
Taobao
Ctrip
Legacy services
Chase
Amex
Bank of America
USCIS
USTA
FDA
NCBI
Nature
NEJM
FlightAware
Apple Developer
App Store Connect
Connectors?
The long tail starts where APIs don't exist
All of these services have a website
1. Load the website
In a browser / web view
2. Inject JavaScript
A snippet defines callable functions
3. Invoke a function
Client calls bookCourt()
↓
Website action
Matcha Tennis: one app, multiple providers
How do we produce actions.js?
Easy!
Tell Claude Code to
reverse engineer a website,
or feed it a HAR file
But...
we are on an iPhone
The agent doesn't have to know that
On a computer
Bash
File system
On an iPhone
JavaScriptCore
On-device storage
On any device
Script runtime
Persistent storage
We call this execution environment Ox VM.
On a computer
Script runtime
File system
On an iPhone
JavaScriptCore
On-device storage
On any device
Script runtime
Persistent storage
Inside Ox VM
Each Ox Service can be produced
just-in-time when I need it.
Security
The VM can request actions, but it cannot bypass authorization.
Every agent has an evolve skill
I ask Ox
“Book a tennis court”
Agent
Learn the website.
Create the service it needs.
Ox Repository
Distributed Evolution
Git Server (e.g., GitHub)
Ox Repository (Financial)
Ox Repository (Health)
Ox Repository (Travel)
My Ox
Dad’s Ox
Bro’s Ox
Requirement 2
Mine
Portable Data
Ox Profile
Identity · Memory
Files · Conversations
My Profile
Dad's Profile
Testing Profile
Optionally, sync across my devices
Ox Profile
My portable directory
Mac mini
MacBook
iPhone
Interoperable Devices
Great for debugging, too.
iPhone / Android
Computer / other device
Requirement 3
Any model
Model providers
OpenAI
Anthropic
Google
Any provider supporting:
- OpenAI Responses
- OpenAI Chat Completions
- Anthropic Messages
- Gemini Generate Content
Local models
(@openox/agent)
Pi Durable
One on-device agent runtime
Commit before display. After restart, recover from stored state—not a saved JavaScript VM.
The next organizing layer is not another Google
What does this mean for 🎾?
What if I can play more tennis wherever I go
Thanks
Inspiration:
Pi Coding Agent, Earendil
Listening and suggesting:
- Xiaofeng Ding
- Zeke John
- Ian Liu
- Colin Li
- Weijian Li
- Herbert Xin
- Ruifan Wang
- Nandh Devineni
- Jose Castillo











