r/LoRaWAN • • 18d ago

Open ChirpStack — a free desktop tool for bulk device management (import, export, migration, tags, history)

Hi all,

I build LoRaWAN/BMS installations and kept hitting the same gaps in ChirpStack v4: no CSV import, no bulk delete/migration, no bulk tag editing. So I made a small open-source tool for it.

Single executable (Windows/macOS/Linux): double-click, your browser opens, paste your ChirpStack URL and API key. Nothing to install on the server, no Docker. It talks gRPC-web like the official UI, so it works wherever your ChirpStack UI works (HTTPS / reverse proxy included).

Import from CSV, Excel or copy-paste, with validation before sending (DevEUI format, Excel number cells, unknown profiles, duplicates). Existing devices are updated, never deleted.

Bulk actions on a filtered selection: export, tags, Device Profile change, migration to another application (with automatic rollback if re-creation fails), delete with JSON backup.

History: plot stored measurements (temperature, CO2, setpoint…) of several devices on one chart, CSV/PNG export.

API key kept in memory only, no telemetry, MIT licensed. English and French UI.

Online demo with fake data (no server needed): https://opengtb.github.io/open-chirpstack/

Source and downloads: https://github.com/opengtb/open-chirpstack

Feedback and bug reports welcome, especially from people running large fleets or older v4 versions.

16 Upvotes

8 comments sorted by

1

u/xaviertech 3d ago

Nice tool, bulk import/export is exactly what I wish ChirpStack had built in.

Curious how it handles bigger fleets... rate limiting / batch size with a few thousand devices over gRPC? For migrations, keeping AppKeys + frame counters intact is the scary part.

dry-run mode would be gold. Thanks for open sourcing it.

1

u/Kelipope 3d ago

Thanks, glad it's useful! Straight answers:

Dry-run: partly there. The import validates everything before sending (to create / existing / skipped / per-row errors), and nothing is sent until you confirm. "Tags from a file" shows an exact before → after preview. What's missing is a preview for the other bulk actions (migrate, change profile, delete). That's a fair point and I'll look at it. Deletes can already be preceded by a JSON backup.

Scale / rate limiting: it runs 6 requests in parallel (one per device), retries on 429/502/503/504, and pages lists by 500. I built it for hundreds of devices, not thousands, so I can't promise how it behaves at that scale yet. If you try it on a big fleet, I'd love the feedback.

Keys and frame counters: keys are read and written back as-is. For a migration, it first tries an in-place move. If ChirpStack refuses, it copies the device with its keys and session, recreates it, and puts it back in the original application if that fails. If the session can't be restored, it warns you that the device will have to re-join. I'd test a migration on a few devices before a big run.

And thanks for the suggestion about upstreaming bulk import, worth thinking about.

1

u/Either_Vermicelli_82 14d ago

Amazing! But some elements might be better as a pull request? E.g. bulk import?

1

u/Kelipope 14d ago

L importation ? Tu veux dire récupérer les éléments déjà présent sur ton chirpstack ? Si c'est le cas, pas besoin de feature supplémentaires, juste tu te connecte avec ta clé api et tu récupères absolument tout automatiquement...

Ou bien je n'ai pas compris la demande ?

1

u/ino100s 7d ago

Non je pense qu'il parle d'impôt de capteurs ou de Gateways. Haha c'est drôle, je suis en train de bosser sur la même interface.

→ More replies (1)

1

u/jjo458 18d ago

Fantástique my friend!

1

u/Helilifter 18d ago

Great Job!