Skip to main content
Enable Cognee’s permission system for data isolation and access control. For detailed concepts, see Cognee Permissions System.

Enable Permission System

Set the environment variable to enable access control:
ENABLE_BACKEND_ACCESS_CONTROL=true
REQUIRE_AUTHENTICATION=true
Database Override: Permission mode enforces Kùzu (graph) and LanceDB (vector). Custom providers are ignored.

Database Setup

Choose your relational database:
  • SQLite — Local development (auto-creates files)
  • Postgres — Production (requires manual setup)
See Relational Databases for detailed configuration.

Authentication

API Server

Start the server with authentication:
uvicorn cognee.api.client:app --host 0.0.0.0 --port 8000
Default credentials (development only):
  • Username: default_user@example.com
  • Password: default_password

Programmatic Access

See Permission Snippets for complete programmatic examples.

Data Organization

Data is automatically organized by user and dataset. Each user gets isolated storage:
.cognee_system/databases/<user_uuid>/
├── <dataset_uuid>.pkl         # Kùzu graph database
└── <dataset_uuid>.lance.db/   # LanceDB vector database

Troubleshooting

Permission Denied: Verify user has required permission on the dataset. Data Isolation: Check per-user database files exist:
ls -la .cognee_system/databases/<user_uuid>/
Database Conflicts: Custom providers are ignored in permission mode.