How It Works
You don't need to know any of this to use Palpable -- it's here for the curious.
The big picture
Palpable has three parts:
Your Pi
A small program called the bridge runs on the Pi. It talks directly to your sensors and actuators, runs your behaviors locally, and stays connected to the cloud.
Key things the bridge does:
- Detects modules automatically when you plug them in
- Reads sensors and sends data to the cloud (so you can see it in the app)
- Runs behaviors on-device -- your automations work even if the internet goes down
- Handles updates -- downloads new versions safely and rolls back if anything goes wrong
The cloud
When you open the app, the cloud connects everything together:
- PAL is available to chat with and create behaviors
- Sensor data is relayed from your Pi to your phone
- Behaviors you create are compiled and sent down to the Pi
The app
The Palpable app on your phone is your window into everything:
- Live sensor readings
- Conversations with PAL
- Projects, behaviors, and display editor
- Device status and settings
How sensor data reaches your phone
This happens continuously -- values update in real time.
How behaviors work
The important part: behaviors run on the Pi itself. If the internet drops, your automations keep working. Actions that are purely on-device (turning on a relay, playing a buzzer) work completely offline. Notifications and cloud actions are queued and sent when connectivity returns.
How updates work
Your Pi updates itself automatically. When a new version is available, it's downloaded in the background and installed on the next restart.
The system keeps a backup of the previous version. If a new update causes problems, the Pi automatically rolls back. A bad update can never brick your device.
Security
- All connections are encrypted (TLS)
- Setup tokens are single-use
- API keys are hashed -- the raw key is never stored on servers
- Each user's data is isolated
For developers: If you want to build apps that connect to Palpable's live data, check out the Project Context API.