Previous values (adamaps-ingest-2026, adamaps-read-2026, mapnet-ingest-2026) were inline defaults across adamaps + adacam-api + varroa. The ingest key was briefly anon-visible during the 2026-05-27 Forgejo public-flip when adacam-api + varroa were public for a short window before the leak was spotted. New values live in Vaultwarden: - AdaMaps — API_KEY (ingest) - AdaMaps — READ_KEY Validators now hard-fail at boot if the env var is missing. Service is on hold today; when it resumes, both env vars must be set.
61 lines
1.5 KiB
Markdown
61 lines
1.5 KiB
Markdown
# adacam-api
|
|
|
|
Clean Python Flask replacement for Hivemapper's `odc-api` — a 434k-line Node.js monolith with a filed CVE. This service runs on the **Hivemapper Bee (HDC-S)** dashcam as part of the **adacam** liberation stack.
|
|
|
|
## What it does
|
|
|
|
- Serves API endpoints for the Varroa Android app and adamaps-forwarder
|
|
- Reads GPS data from Redis (`GNSSFusion30Hz`)
|
|
- Stores landmark detections in SQLite
|
|
- Forwards detections to AdaMaps API (with offline queuing)
|
|
|
|
## Endpoints
|
|
|
|
| Method | Path | Description |
|
|
|--------|------|-------------|
|
|
| GET | `/api/1/landmarks/last/{N}` | Last N detections |
|
|
| POST | `/api/1/landmarks` | Ingest new detection |
|
|
| GET | `/api/1/gnssConcise/latestValid` | Current GPS fix |
|
|
| GET | `/api/1/status` | Device status |
|
|
| GET | `/api/1/deviceinfo` | Device identity |
|
|
| GET | `/api/1/recording/frames/latest` | Latest frame path |
|
|
|
|
**Note:** `/api/1/cmd` is intentionally NOT implemented — that was the CVE.
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
./install.sh
|
|
```
|
|
|
|
This will:
|
|
1. Copy files to `/opt/adacam/`
|
|
2. Install Python dependencies
|
|
3. Enable and start the systemd service
|
|
4. Generate a device ID on first run
|
|
|
|
## Configuration
|
|
|
|
Config file: `/data/adacam/config.json`
|
|
|
|
```json
|
|
{
|
|
"device_id": "auto-generated UUID",
|
|
"adamaps_key": "<your-adamaps-ingest-key>",
|
|
"adamaps_api": "https://api.adamaps.org",
|
|
"ap_interface": "wlp1s0f0",
|
|
"tunnel_host": "",
|
|
"tunnel_user": "",
|
|
"tunnel_port": 2222
|
|
}
|
|
```
|
|
|
|
## Requirements
|
|
|
|
- Python 3.8+
|
|
- Redis (for GPS/IMU data)
|
|
- Flask, redis-py, requests
|
|
|
|
## License
|
|
|
|
MIT
|