# posse > A handheld that shows where your friends are at a festival: LoRa mesh over > MeshCore on an Elecrow ThinkNode M9, with no phone and no cell service. This > site is the marketing page plus a full browser emulator of the device. posse is one C++ MeshCore application written against a small hardware abstraction layer. It compiles twice: for the ESP32-S3 in the ThinkNode M9, and to a freestanding WebAssembly module. The emulator on this site instantiates one wasm module per simulated device and drives them from a TypeScript world engine, so the pixels in the browser are the bytes the real ST7789 would have received. ## Pages - [/](https://posse.proc.io/): what posse is. The device on this page is a live wasm instance of the firmware, not a screenshot. - [/sim](https://posse.proc.io/sim): the emulator. A field of devices on a map, a device panel with a working screen and keyboard, a LoRa channel model you can tune live, and a packet log. - [/about](https://posse.proc.io/about): architecture and the limits of the model. ## The device - Elecrow ThinkNode M9: ESP32-S3R8, Semtech LR1110, 240x320 ST7789, 37-key QWERTY keyboard on a coprocessor, GNSS, QMC6309 magnetometer, PCF8563 RTC. - Default radio: 910.525 MHz, SF7, 62.5 kHz, CR 4/5, 22 dBm. - UI: four tabs (RADAR, CREW, MSGS, SETUP). LEFT/RIGHT switch tabs, UP/DOWN select, ENTER opens, ESC/BACK leaves, F1 or MENU opens quick messages, 'b' sends a beacon now, 'a' sends an advert. - Eight friend colours, indexed the same everywhere: red, orange, yellow, green, cyan, blue, magenta, white. ## The emulator - Scenarios are JSON: an origin, a seed, radio and channel parameters, and a list of people with an offset, a motion model and a colour. They are served from /scenarios/index.json and /scenarios/.json. - The firmware wasm is served at /posse.wasm. - Channel model: log-distance path loss with per-pair log-normal shadowing, a thermal noise floor for the bandwidth, per-SF demodulation thresholds, LoRa airtime, collisions with a capture threshold, and half-duplex receivers. - Everything runs client side. There is no API and no account. ## Notes for agents - The world engine is plain TypeScript and is imported by this site directly; the emulator keeps it on the main thread because it runs hundreds of times faster than realtime. - posse is always written in lowercase. - Built by Infinite Logic PBC (https://infinitelogic.org).