HTTP intake to landing objects

Do the Fly.io setup first.

Devices
POST /readings
HTTPS
web Machine
PUT
Tigris landing/
list, read
jobs Machine
every minute
commit
Tigris lake/
Iceberg tables

With INTAKE=landing, the web process writes each request to landing/ in Tigris before it answers 202, so a crash loses nothing the device was told was received. Every minute the jobs process lists landing/, appends every object in one commit, and deletes them. Readings reach queries within about a minute.

fly secrets set --app $APP INTAKE=landing

Each request costs one Tigris PUT, and each jobs run a LIST, a GET per object, and a delete. For many devices sending often, have them batch readings into fewer requests. Try it with the curl command from HTTP intake, buffered, then wait a minute.