Permiso uses SQLite as its database. The data directory is configured via environment variable:
PERMISO_DATA_DIR=./dataThe database file is stored as permiso.db within the data directory.
Migrations are managed with Knex.js using the better-sqlite3 driver.
# Create migration
npm run migrate:permiso:make add_new_table
# Run migrations
npm run migrate:permiso:latest
# Rollback
npm run migrate:permiso:rollback
# Status
npm run migrate:permiso:statusdatabase/
└── permiso/
├── knexfile.js
└── migrations/
└── 20250823075842_initial_schema.js
For Docker deployments, set PERMISO_AUTO_MIGRATE=true to run migrations on container startup.