Browse documentation

Start here

OverviewGetting startedThe mental model

Use the runtime

Run the simulatorPi Agent and workspaceInstall and manage AppsESP32-P4 reference targetESP32-S3 supported target

Build Apps

App developer guideBuild your first AppApp source and packageData and migrationsActions and ToolsView and interactionNetworking and native servicesApp resourcesSchedulesPackage and updateTesting and debugging

Understand the runtime

Runtime flowGuests and lifecycleLayers and ownershipHarness boundary

Security

Trust and capabilitiesData isolationLifecycle and recovery

Reference

App manifestPocketPi APIView APICLI referenceLimits and compatibility

Examples

Exa App walkthroughRobinhood App walkthrough

Project

Current boundariesValidation status

Pi Agent and /workspace

Pi Agent is the privileged resident System App. Its Agent loop, Tool registry and Root View share one long-lived Guest, and it alone owns the top-level /workspace.

Resident means one lifecycle

Firmware embeds the Pi Agent release so a blank device can boot. The System Guest is created once and remains outside the ordinary View/Action LRU caches. Opening an ordinary App changes only the foreground View. It does not reset the conversation, drop an active model request or rebuild the Tool registry.

Workspace is Agent-owned durable state

On ESP32-P4 and ESP32-S3, /workspace lives in LittleFS. In the simulator it maps to the directory supplied by --workspace. Agent files survive Guest activity and device restart. This is separate from every ordinary App's private data root.

/workspace/
├── memory.md                 Agent-managed files
├── notes.txt
├── .system/                  runtime-owned state
│   └── app-events/<id>.json  recent install/update outcomes
├── system/app/               firmware-seeded Pi Agent release
└── apps/<id>/
    ├── release/              installed App source
    ├── checkout/             Agent-editable candidate, when present
    ├── data/                 App-owned SQLite/files
    └── tmp/                  disposable App files

The Agent uses bounded file Tools; it does not receive raw access to another App's SQLite, native credential store or arbitrary host filesystem.

Core native Tools

AreaToolsPurpose
Workspaceread, write, edit, find, grep, lsDurable Agent-managed files
Devicedevice.status, time.nowBounded runtime facts
Contextworkspace.contextAssemble durable workspace memory
Agent wakesschedule.set, schedule.list, schedule.cancel, schedule.clearPrompt the Agent now or later
UtilitybashAllowlisted workspace/device commands

Embedded bash is a command dispatcher, not POSIX. There are no processes, pipes, package manager or unrestricted host shell. Its name preserves the familiar Agent Tool shape; its implementation remains bounded for the device.

Agent wake versus App schedule

Agent wakeApp schedule
OwnerPi Agent workspaceOrdinary App manifest/runtime
RunsA new prompt through the Agent loopOne named deterministic Action
Best forReasoning, follow-up and cross-App coordinationRefresh, cleanup and synchronization
Needs modelYesNo

What survives reboot today

  • Agent workspace files and Agent wake schedule state survive.
  • Installed Apps, App SQLite/files and App schedule cursors survive.
  • Wi-Fi and model credentials survive in native stores on hardware.
  • The in-heap conversation does not survive; session persistence is not implemented.