AI App Builder Audits · AI Development Series
ToolJet gives you the internal tooling without the per-user bill. The engineering questions are the same ones as any tool with a key to production.
ToolJet is an open-source internal tool platform that has become popular with engineering teams, partly on capability and partly because its pricing does not charge for every end user. It is designed to be self-hosted.
Structurally this is the same proposition as Retool or UI Bakery: a well-made interface layer holding a privileged connection to a database you already own. Because the schema is yours and was designed deliberately, the data-modelling problems that dominate app-generator audits generally do not apply.
What matters instead is who the database thinks is asking, whether permissions block queries or only hide controls, and — because most ToolJet installations are self-hosted — how the instance itself is exposed and maintained.
These recur across internal tools built on production databases.
The platform holds a single set of database credentials, usually broad. Every query anyone runs arrives under that identity, so the database cannot restrict by person, team or region.
Your database audit log shows one account doing everything, which is a poor position if you ever need to reconstruct who did what.
What it costs you: no per-user enforcement or attribution at the database level.Groups control what applications and components a user gets. The question worth testing is whether a user in a restricted group can still trigger a query belonging to a component they cannot see.
Where the answer is yes, your permission model is describing the interface rather than governing the data.
What it costs you: users reaching queries their group was meant to exclude.Self-hosting is the main reason teams choose ToolJet, and updating it is nobody's explicit job. Instances drift months or years behind, and often end up reachable from the public internet so people can use them remotely.
An unpatched internal tool with production credentials, exposed to the internet, is among the more attractive things you could run.
What it costs you: a privileged, internet-facing, unpatched entry point to production.ToolJet is a capable, economical answer to internal tooling, and being open source and self-hostable means neither your data nor your costs are subject to somebody else's decisions. For engineering teams who want control, it is a sound choice.
The honest summary: ToolJet is a good tool and self-hosting is a legitimate choice, provided somebody owns the consequences. The tooling risks are the standard ones; the deployment risk is the one that only applies because you chose to run it yourself.
The pattern is a single data source connection shared by everybody, with group permissions applied on top of the interface. That makes the groups a description of what people should see rather than a rule about what they can actually reach.
It is open source, self-hostable and a legitimate alternative to the commercial internal-tool builders. The risk profile is the same as its peers: it sits directly on your production data, so whatever it can do, its users can do.
Not on their own. Groups govern what appears in the app. If query-level access does not match the group, a user who can reach a query can run it regardless of which group they are in. The two need checking against each other.
Where one connection serves every user, yes. The connection holds the rights and the app decides how much of that to expose. Anything that bypasses the app, or any query left broader than the group it belongs to, is not covered.
It keeps your data under your control and removes a vendor from the chain. What it adds is responsibility for updates. Self-hosted instances drift out of date quietly, because nothing prompts you and the tool carries on working.
It can, once connections are scoped, query permissions match group permissions and the instance is current. What usually fails is the gap between those three, because each was configured separately and nobody has checked that they agree.
Aligning query and group permissions and scoping connections is configuration, so it is quick relative to the risk it removes. The audit is £495 + VAT and covers the app and the deployment together. Credited back in full if we do the work.
Only indirectly, and it is worth naming: cheaper per user tends to mean more users, and more users means a wider blast radius when permissions are not properly enforced. The saving is real and sensible. It just makes getting the permission model right more important rather than less.
Read access to the applications so we can see queries, JavaScript and group configuration, the database schema and the credentials the platform connects with, plus how the instance is deployed and who can reach it. We will not change anything.
No, and we would rather say so plainly than pretend otherwise. We build with Claude Code and Cursor, with senior developers designing the system, reviewing every change and testing it. What makes us useful here is not ToolJet expertise, it is that the thing being audited is SQL, a permission model, a production database and a deployment.
We audit what these tools produce, whichever one you used.
Tell us roughly what you built and how many people use it. If an audit is not the right thing for you, we will say so.
What the report covers:
We reply within one working day.