← The ShipLock Log For tinkerers

The greenhouse went online
without opening a single port.

June 2026 · 4 min read

A friend of ours has a Raspberry Pi in his greenhouse. It logs temperature, soil moisture, humidity, and light every few minutes, and for two years the readings went to a little dashboard running on localhost. Lovely. Useful. Visible to exactly one person, sitting at one desk, in one house.

Then his allotment friends wanted in. "Just send us the link," they said, as if there were a link.

The options he didn't take

If you've ever tried to share a local dashboard, you know the menu:

All three share a flaw: they try to bring people in to where the data lives. The fix is to push the data out to where the people are.

One sentence built the dashboard

He uses Claude Code, so he installed the /shiplock skill and typed:

/shiplock a garden sensor dashboard showing temperature, soil moisture, humidity, and light as cards with sparklines. Data gets pushed from a Pi. Read-only for visitors.

Claude built the page, ShipLock deployed it, and a minute later there was a live URL. The "read-only for visitors" part matters: anyone with the link can watch the greenhouse, and nobody but him can touch the data.

One cron job keeps it alive

Every ShipLock app has a built-in data store behind a plain HTTP API. So the Pi runs one cron job, on the hour:

0 * * * * curl -X PUT https://api.shiplock.app/data/APP_ID \
  -H "Authorization: Bearer $SHIPLOCK_TOKEN" \
  -H "Content-Type: application/json" \
  -d "$(python3 read_sensors.py)"

That's the whole integration. The Pi reads its sensors, bundles the readings into JSON, and pushes them up. The dashboard updates for everyone, everywhere, within the hour.

Notice what never happened

No port was opened. No dynamic DNS was configured. No reverse proxy was tuned at midnight. The Pi makes outbound requests only, the same as any laptop browsing the web, so the home network stays exactly as closed as it was before. If the Pi dies, the dashboard calmly shows the last readings instead of a connection error.

His friends bookmark the link on their phones. One of them checks the soil moisture before deciding whether to drive over and water. Nobody has installed anything.

You can see a live version of this exact setup here: tester.shiplock.app/demo-garden-tracker

It's a pattern, not a one-off

Anything that produces numbers on a schedule can use the same shape. A home server's health stats. A weather station. A 3D printer's job queue. A beer fridge's fermentation temperature. The script changes, the pattern doesn't: build the dashboard in a sentence, push data with one cron line, share one link.

The greenhouse is doing fine, by the way. Humidity's a touch high.

Put your project online

One sentence for the dashboard. One cron line for the data. Free to start.

Get started free →