OpenOx

Zi (@ziyzhu)

A bit about me

Newspaper feature showing me playing tennis Playing tennis on an outdoor court

I like to play tennis 🎾

Rackets, tennis balls, and a bag beside the court Me attending a match at a tennis stadium

I wanted to become really good,
like really good.

Tennis Without Talent instructional website Tennis coach Avery West’s profile

Coaches, trainers, books, videos, ...

Folder of fitness routines and training resources The Inner Game of Tennis by W. Timothy Gallwey

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

Script
Writing a web crawler to reserve tennis courts
Discord Bot
Matcha Discord notifications announcing available tennis court slots
iOS App
Matcha Tennis App Store listing with court map, search, and booking screenshots

How does this have anything
to do with systems?

I discovered something

Website interactions need to run on my phone.

Cloudflare verification page asking the visitor to verify they are human
Whiteboard sketch comparing access to the internet through websites and apps with access through Ox or another personal assistant

What if I could do this for everything else?

No longer limited by UI, and much faster.

Requirement 1

Connect to anything

Assistant services

  • ChatGPT
  • Claude
  • Gemini
  • DeepSeek
  • Grok
  • Copilot
  • Qwen
  • Kimi
  • Perplexity
  • Doubao
  • Z.ai
  • Hugging Face

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?

Connectors list with featured and productivity services Connectors list with Google and Microsoft services Plugins list with browser, DoorDash, GitHub, Gmail, and other integrations

The long tail starts where APIs don't exist

giantsstarts here: long tail

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

Claude Code running in a terminal, from Anthropic’s official demo

But...
we are on an iPhone

Apple iOS interface image with the iPhone Home Screen and its app icons visible on the right

The agent doesn't have to know that

Agent
Persistent execution environment

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.

Agent
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

Ox VM capability catalog shown on a retro computer, with ox.help() and the ox.* capability groups

Each Ox Service can be produced
just-in-time when I need it.

Security

Authorization boundary Typed actions VM ox.fs.read ox.fs.write ox.services.invokeAction('listCourts') ox.services.invokeAction('bookCourt') Read Write Read Write Gate Allow Ask human Deny Approvedonly Real device Execution

The VM can request actions, but it cannot bypass authorization.

Every agent has an evolve skill

I ask Ox

“Book a tennis court”

Agent

evolve skill

Learn the website.
Create the service it needs.

Ox Repository

Services
Skills

Distributed Evolution

Git Server (e.g., GitHub)

Ox Repository (Financial)

Services
Skills

Ox Repository (Health)

Services
Skills

Ox Repository (Travel)

Services
Skills
My Ox
Dad’s Ox
Bro’s Ox
Ox Services showing Git repository origin, sync controls, and available services

Requirement 2

Mine

Portable Data

Ox Profile

Identity · Memory
Files · Conversations

A portable folder I own

My Profile

Dad's Profile

Testing Profile

Profile folder in Finder containing conversations, MEMORY.md, profile.json, and skills

Optionally, sync across my devices

Ox Profile

My portable directory

My iCloud

Mac mini

MacBook

iPhone

iPhone Files app showing personal document folders synced through iCloud

Interoperable Devices

Great for debugging, too.

iPhone / Android

Ox ClientThe interface I use
Ox HostRuns the agent and Ox VM
(Tailscale/Tailcat)

Computer / other device

Ox ClientThe interface I use
Ox HostRuns the agent and Ox VM
Connected devices: iPhone 17 Pro Max, Mac mini, and MacBook Pro
Ox CLI help showing commands for profiles, repositories, hosts, conversations, and VMs

Requirement 3

Any model

Model providers

  • OpenAI
  • Anthropic
  • Google

Any provider supporting:

  • OpenAI Responses
  • OpenAI Chat Completions
  • Anthropic Messages
  • Gemini Generate Content
Ox Agent
(@openox/agent)
Swift Rewrite of Pi
Pi Durable
Apple JavaScriptCore
SQLite

One on-device agent runtime

Ox Agent and Pi Durable execute inside JavaScriptCore Inside the Ox Host, JavaScriptCore runs Ox Agent and Pi Durable. An asynchronous native bridge connects them to Swift. Swift executes SQLite operations on a native queue and routes model requests and tools to providers and Host capabilities. Committed events return to the client for rendering. Ox Host · on device Apple JavaScriptCore @openox/agent Ox prompts · skills · tools · Profile state configures Pi Durable Agent loop · submissions · tasks · atomic commits Async bridge Swift Host DurableRuntime SQL + files → native queue Model + tool calls → Host SQL / rows Models + tools Provider requests · services · native capabilities SQLite · state.sqlite Entries · documents · checkpoints

Commit before display. After restart, recover from stored state—not a saved JavaScript VM.

The next organizing layer is not another Google

Public web to walled platforms to my device Public web Walled Platforms My device Internet connectivity map Facebook Reddit Xiaohongshu LinkedIn Facebook Reddit Xiaohongshu LinkedIn Personal Context

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