rpc-project¶
rpc-project is a simple, powerful RPC service for controlling every aspect of a remote
machine. A small C server exposes a protocol for calling native functions; a Python
client turns that into a rich, scriptable API. Think of it as a swiss-army knife for:
- QA automation
- Development — test your APIs straight from Python
- Software research — found an interesting OS API? Try it with no compilation required
Two components¶
- Server — a binary written in C that exposes a protocol to call native C functions.
- Client —
rpcclient, written in Python 3, that talks to the server and builds high-level APIs on top of native calls.
What the client gives you¶
Cross-platform:
- Remote system commands —
p.spawn() - Remote shell —
p.shell() - Filesystem —
p.fs.* - Network (Wi-Fi scan, TCP connect, …) —
p.network.* - Sysctl —
p.sysctl.*
Darwin (macOS/iOS):
- Multimedia record/play —
p.media.* - Preferences (CFPreferences / SCPreferences) —
p.preferences.* - Process management —
p.processes.* - Location —
p.location.* - HID simulation (touch, keyboard, battery) —
p.hid.* - IORegistry —
p.ioregistry.* - Logs & crash reports —
p.reports.* - Time, Bluetooth, XPC —
p.time.*,p.bluetooth.*,p.xpc.*
iOS only:
- MobileGestalt —
p.mobile_gestalt.* - Backlight —
p.backlight.* - Dump decrypted apps —
p.processes.get_by_basename(name).dump_app('/path')
…and much more.
Where to go next¶
- Installation — get the server and
pip install rpcclient. - Quick start — run the server and open the client shell.
- Calling native functions — symbols, globals, ObjC.
- API reference — the generated
rpcclientreference.