Skip to content

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

Get started Quick start

Two components

  • Server — a binary written in C that exposes a protocol to call native C functions.
  • Clientrpcclient, 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