Pelote

SliTaz GNU/Linux · version 0.1

Your SliTaz machine,
in your pocket.

Type pelote on the machine, scan the QR code with your phone and you are done: update it, reboot it, watch its CPU and memory from home or from the other side of the world.

No SSH. No port to open. Nothing to configure on your router. The relay in the middle only sees encrypted bytes.

How it works

  1. 1

    Pair

    pelote pair shows a QR code in the terminal. The phone scans it, you say yes on the machine. That is the whole setup, under a minute.

  2. 2

    Act

    The app shows the machine's actions as a menu: update, reboot, power off, disk usage… Each one is a small script in /etc/pelote/actions.d, packages can add their own.

  3. 3

    Watch

    Output streams live while an action runs. The monitor draws five minutes of CPU, memory, disks and network, and stops as soon as the app is in the background.

Android appNoise keys, Keystore
outgoing wss://
Relaypelote.slitaz.org, reads nothing
outgoing wss://
SliTaz machinepelote daemon
end-to-end encrypted tunnel (Noise)

Safe by default

End-to-end encrypted

The phone and the machine speak Noise (XK to pair, then KK) through the relay. The machine key reaches the phone through the QR code, out of band: a malicious relay can neither read nor impersonate.

Only what you allow

No free shell. The phone can only run the scripts of actions.d, owned by root and writable by no one else. Each declares its danger: a confirmation and your fingerprint for the dangerous ones.

Least privilege

The daemon reads its key as root, then runs as the pelote user. Root actions go through a tiny setuid helper that checks everything again. Every run is logged.

Revocable

A lost phone is one command away: pelote revoke closes its sessions at once. Pairing codes work once and expire after five minutes.

Written in C for SliTaz, tested with a fuzzer and runtime checks, BSD licensed. Details in SECURITY.md and PROTOCOL.md.

Set up a machine

On SliTaz, as root:

# spk-add pelote
# /etc/init.d/pelote start
# pelote pair

Add pelote to RUN_DAEMONS in /etc/rcS.conf to start it at boot. Then, every day:

pelote listpaired phones
pelote revoke <id>unpair one
pelote actionsthe menu, and the scripts it refused
pelote statusdaemon and relay
pelote logwho ran what, when

Rather keep everything at home? pelote-relay is a package too: run your own behind any TLS web server, then pelote relay wss://your.host/relay.

Get the app

Pelote for Android

Version 0.1.2 · Android 8 and later · 3 MB · no Google services. F-Droid will come later.

Download the APK

Allow installing from your browser when Android asks. It is signed with the Pelote key below: an update signed otherwise would be refused.

APK SHA-256
43d1cec0b2cd64d997c295a896385ee3d2b23c4cca958c2aef63d8bda58b9399
Signing certificate SHA-256
db:9f:43:cc:82:c7:d7:30:c9:5c:46:1a:e7:14:98:e8:37:32:7f:af:e0:44:a6:b1:64:bb:79:cb:5c:e4:6b:33

This is a first test release: it may still break. Bugs and ideas are welcome on the forum.