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.