Skip to content

Frequently asked questions

Short answers, each drawn from the page it links to. If you want the detail, follow the link.

Does Laravel Truss expose my data?

No. Truss reads structure only, never row data: tables, columns, indexes and foreign keys. Row contents are never queried or exposed. The boundary is the CREATE TABLE definition, so column defaults and native table comments count as structure and are in scope, while the rows themselves are not. Every export, image and diagram follows the same rule.

More in the documentation.

Is Laravel Truss safe to run in production?

Yes. It is designed to be installed in production and gated there by two independent layers, both of which must pass. Note that running on a non-local server requires installing it as a regular dependency rather than a dev one, because a --dev install is stripped from composer install --no-dev deploys and the route would return 404.

More in the documentation.

Is Laravel Truss an ERD generator?

Yes, that is what the dashboard is: your schema as an ER diagram, with each table an entity box carrying its columns, native types and PK / FK badges, and foreign keys drawn as crow's-foot relationships. The difference is where the diagram comes from. Truss reads the live database rather than your migration files, so the ERD shows the structure that is actually there. Structure only, never data.

More in the documentation.

Can Laravel Truss draw an ERD from my Eloquent models or migrations?

No. Truss builds every relationship from the foreign keys your database enforces, so an application that declares its relations in Eloquent without database constraints will show tables with few edges between them. truss:doctor reports the foreign keys that look missing. Reading Eloquent relations as a second source of edges is on the roadmap under Exploring.

More in the documentation.

How is access to the Truss dashboard controlled?

By two layers. truss.enabled is the deploy switch and defaults to the local environment only, so a production deploy stays dark until you set TRUSS_ENABLED=true. The fixed viewTruss gate is the access control, consulted only outside local. Both failure modes return 404 rather than 403, so the dashboard never confirms it exists to someone who may not view it.

More in the documentation.

What PHP and Laravel versions does Laravel Truss require?

PHP 8.2 or higher and Laravel 12 or higher. Install it with composer require albertoarena/laravel-truss --dev for local use. The service provider is auto-discovered, and there is nothing to publish to get started. Publishing the config to config/truss.php is optional, and every option has a sensible default.

More in the documentation.

Which databases does Laravel Truss support?

It reads through Laravel native schema introspection rather than a separate driver layer, so it follows what your Laravel connection supports, including MySQL, MariaDB, PostgreSQL, SQLite and SQL Server. Native table and column comments are read on MySQL, MariaDB and Postgres; SQLite and SQL Server have none, so they are skipped.

More in the documentation.

Does Laravel Truss work with multiple database connections?

Yes. Leave the connections config empty to use the application default, or list the connections you want visualizable. Only listed connections are visualizable, and a request for any other connection returns 404. Per-connection excluded_tables are merged on top of the global list.

More in the documentation.

Does Laravel Truss need a build step or asset publishing?

No. There is no separate assets publish step. Truss serves its JavaScript, CSS, fonts and a vendored copy of Mermaid from a route inside the package, so there is nothing to publish and no CDN to reach. Only the config file is publishable, and that is optional.

More in the documentation.

Can I try Laravel Truss without installing it?

Yes, and on your own schema rather than ours. Paste a mysqldump taken with no data, or the output of truss:export --format=json, and the real dashboard draws your tables in your browser: nothing is uploaded, and no row data is read. There is also a plain demo on a sample schema, a multi-connection variant, and a theme builder. All of it is structure only.

More in the documentation.