Open-source equipment booking systems: what actually reserves gear

Stanislav TyshchenkoComparison10 min readSep 11, 2026
A workshop shadow board of equipment slots, one empty with an amber tag reading OUT — BACK THU?

Most tools that look like the answer here are asset registers. They know the camera exists and who signed for it; they have no idea whether it is free on Thursday. Snipe-IT is the biggest of them and still cannot hold a future date. GLPI can, and hides it. NEMO is the one written for shared instruments with a queue. Shelf is the one to pick if the gear leaves the building. None of them takes payment.

Your asset register doesn't have a calendar

Search "open source equipment booking system" and the results split into two groups that do not do the same job, which is why so many of these deployments end with a spreadsheet still open next to the app.

The first group is the register. It answers what do we own and who has it right now — serial numbers, purchase dates, warranty, a custody trail, a barcode on the side. Snipe-IT, GLPI and InvenTree live here. The second group is the calendar. It answers when is this free — a resource, a time range, a conflict check. LibreBooking and MRBS live here, and both were written with rooms in mind.

Equipment sits awkwardly between them. A camera needs the register (it has a serial, it gets damaged, somebody signed for it) and the calendar (four people want it for the same shoot week). Pick a tool from one group and you spend the next year hand-rolling the other half.

So the question to settle before you install anything: is your problem custody or contention? If gear goes out and comes back and nobody ever fights over dates, you want a register and you can stop reading after the next two sections. If two people regularly want the same item at the same time, you want a calendar, and the register is the part you can fake with a spreadsheet for a while.

Snipe-IT has 14,900 stars and no way to book Thursday

Snipe-IT (AGPL-3.0, PHP, ~14,900 stars as of 11 September 2026) is the best-known open-source asset system by a wide margin, and it is genuinely good at what it does. Assets, licences, accessories, consumables, components; check-out to a user, a location or another asset; an expected check-in date; email nags when that date passes; a decent API.

What it does not have is a reservation. You cannot say "Ned takes the spectrometer next Tuesday to Thursday" and have the system hold those days. Check-out is now. The nearest thing is the requestable-assets feature, where a user asks for an item and an admin approves — with no date attached to the request.

This is not an oversight nobody noticed. It is one of the longest-running open feature requests in the project: issue #5081 asked for reservations, #6214 asked for a booking system, #11356 asked for future-dated check-out, #15838 asked again. The requests keep arriving because the product invites the assumption and then does not deliver it.

If you already run Snipe-IT for IT kit and you are being asked to add booking, the honest options are to put a calendar next to it and accept two systems, or move the bookable subset of your gear somewhere else. Retrofitting reservations into Snipe-IT is a fork, and forks of a 14,900-star PHP app age badly.

GLPI ships a reservation calendar that's switched off by default

GLPI (GPL-3.0, ~6,300 stars) is the other big asset-management project, and it has the feature Snipe-IT doesn't: a real reservation module.

The catch is discoverability. By default no asset in GLPI is reservable. You make an item bookable from the Reservation tab on that item's form, one item at a time, and you grant the right to reserve through profiles under Administration → Profiles → Reservable items, separately for Read and Make a reservation. Miss either step and the feature is invisible, which is exactly why teams who already run GLPI go looking for a second tool.

Once it's on, it does the useful things. Tools → Reservations gives a calendar of every reservable item and the dates it's taken, there's a "find a free item in a given period" search, and reservations can be made recurring with the option to delete one occurrence or all of them.

It looks like an add-on because it is one, structurally. There's no automatic availability rule engine, no per-item booking window, no approvals workflow. But if GLPI is already running your asset inventory, turning this on costs an afternoon and it is very likely the correct answer. Check it before you evaluate anything else in this article.

NEMO: written for gear with a queue, a supervisor and a bill

NEMO is the most interesting project in this category and the least known — about 180 stars, 86 forks, 3,118 commits, 164 releases, most recently 8.0.2 in May 2026. It is developed by NIST as laboratory logistics software for user facilities: nanofab cleanrooms, shared instruments, the kind of place where an SEM has a waiting list and a per-hour rate.

That origin shows in what it models. Tool reservations on a calendar with per-tool rules. Tool control — enabling and disabling instruments, with support for hardware interlocks, so the software can refuse to let an unqualified user physically start a machine. Qualification per user per tool. Maintenance tasks and problem reports attached to the tool. Area access through a badge reader and kiosk screens, so the system knows who's in the cleanroom. Usage that rolls up to accounting.

No general booking tool has any of that, and if your equipment has a supervisor and a training requirement, it is the difference between software that matches your process and software you argue with.

Two things to know before you commit. First, it's Django and it expects a real deployment — there's a Docker "splash pad" image preloaded with sample data for evaluation (docker run --detach --name nemo_splash_pad --publish 8000:8000 nanofab/nemo_splash_pad), and a hosted demo at nemo-demo.atlantislabs.io, but production means running Python, a database, and upgrades across 164 releases.

Second, and this one catches people: NEMO is not under an OSI-approved licence. LICENSE.md is the NIST Software Licensing Statement — US-government work, provided as a public service, free to use, copy, modify and redistribute, with a request to acknowledge NIST and keep the notice intact. In practice that is more permissive than GPL. On paper it is not "open source" in the sense your legal team's checklist means, and I've seen that stall procurement at organisations that are otherwise fine with AGPL. Worth raising early rather than at review.

Shelf, when the kit leaves the building

Shelf (AGPL-3.0, TypeScript, ~3,000 stars, first commit February 2023) is the newest serious entrant and the only one here that treats bookings and custody as the same record rather than two modules.

A booking reserves a time range on an asset; when the booking starts, custody transfers automatically; QR codes on the gear handle check-in and check-out from a phone. Kits bundle a body, two lenses and a charger so that booking the kit reserves all of it and flags what's missing on return. Workspaces separate inventories by department while admins keep a view across all of them.

That is a good fit for cameras, AV gear, loaner laptops and field tools — anything that physically leaves and comes back, where the argument is as often who had it last as who has it next. It's the option I'd shortlist first for a media department or a university programme.

Two qualifications. Shelf is a commercial product with a self-hostable AGPL codebase, not a community project with a company attached — the hosted plans are the business, and self-hosting is a supported path rather than the main one. And it's a Node app with a Postgres/Supabase-shaped backend, so "self-hosted" is heavier than dropping PHP on a LAMP box.

The eight-month-old option, and why I'd still look

Louez (AGPL-3.0, TypeScript) is an open-source equipment rental platform — inventory, reservations, customers, generated contracts. First commit 6 January 2026, about 39 stars.

I'm not going to tell you to run a project with 39 stars in production. But it's the only one in this list that starts from renting rather than lending, and if that's your model it's worth twenty minutes reading the code before you conclude nothing exists.

Where each one gives up

Snipe-ITGLPINEMOShelfLouez
LicenceAGPL-3.0GPL-3.0NIST statement (not OSI)AGPL-3.0AGPL-3.0
Future-dated reservationNoYesYesYesYes
Serial numbers / custody trailYesYesPartialYesYes
Access control on the hardwareNoNoInterlocks + badge kioskNoNo
Maintenance / fault trackingBasicYes (ITIL)YesYesPartial
StackPHP / MySQLPHP / MySQLDjango / PythonNode / PostgresNode
Takes paymentNoNoUsage billing export onlyNoContracts, not payments

The row that decides it for most people is the second one. The row that decides it for the rest is the last one.

The badge reader is not a feature of the software

Every project above will happily record that the drill is booked to you until Friday. Not one of them can stop you walking off with it.

This is the part that gets underestimated when a booking system is introduced to fix a gear problem. The double-booking was a symptom; the cause is usually that nothing physically gates access. Software fixes the symptom, people keep taking things off the shelf, and six months later the data is wrong and everyone is back on the group chat.

The projects that work long-term pair the calendar with a physical gate — a locked cage where the key is handed over against a booking, a QR scan that is the only way to open the cabinet, NEMO's interlocks refusing to power the tool. Shelf's QR check-in and NEMO's badge kiosk exist for exactly this reason. If you can't gate access, budget for the reconciliation instead: a weekly audit, someone who owns it, and a tolerance for the register drifting.

If you rent the gear out, none of these take the money

Every option here assumes the borrower is on the inside — a colleague, a student, a member. The moment the borrower is a customer paying for the item, the requirements change: a public page, a deposit at booking time, a card on file for damage, cancellation terms, VAT, a refund path, a receipt.

None of the five does that. Louez generates rental contracts, which is the closest, and it stops at the contract. Everything else expects an internal directory and a sign-off.

This is where Opencals fits: a bookable item with a price, a public booking page, a deposit or full payment taken at the time of booking, and the reservation held against availability the same way a staffed appointment would be. Photo-studio slots, hire kit, rental vehicles and equipment rental are the shape of business it's built for, and it's $0.99 per completed booking rather than a monthly seat fee, so a quiet month costs nothing.

The honest limit: Opencals is not an asset register. It has no serial numbers, no condition log, no damage report against a specific unit, no custody chain. If you need to know that unit #4 came back with a cracked filter, you still need a register — Snipe-IT or Shelf next to it, or a spreadsheet, and you decide which system holds the truth.

So: internal gear, money never changes hands, and you already run GLPI — turn on the reservation module today. Internal gear, no incumbent, and it leaves the building — Shelf. Instruments with training requirements and a queue — NEMO, and start with the splash-pad image. Paying customers — none of these, and you should be looking at a hosted booking API instead of a self-hosted register.

What would change my mind on Snipe-IT: if future-dated check-out ever lands, it becomes the default answer for most of this article, because everything else it does is already better than the alternatives.

Frequently Asked Questions

Early Access — 3 Months Free

Ready to transform your service business?

Join 150+ businesses already using Opencals. Get 3 months completely free with all features unlocked.

No credit card required
Setup in 10 minutes
Cancel anytime