Jitera Self-Hosted records audit logs for security-relevant user and system actions. Logs are written in JSON format to a file inside the Sidekiq pod and can be forwarded to external storage via FluentBit.Documentation Index
Fetch the complete documentation index at: https://docs.jitera.ai/llms.txt
Use this file to discover all available pages before exploring further.
Enabling Audit Logs
Audit logging is disabled by default. Enable it in your Helm values:Log Structure
Each audit log entry is a JSON object written to/var/log/audit.log inside the Sidekiq pod:
Required Fields
Every log entry contains these fields:| Field | Type | Description |
|---|---|---|
event | String | Event type from the predefined list |
user_id | String | User ID who triggered the event |
timestamp | DateTime | ISO 8601 timestamp |
Optional Fields
| Field | Type | Description |
|---|---|---|
severity | String | Log severity (AUDIT_ENTERPRISE) |
ip | String | Client IP address, or Internal Service for internal calls |
browser | String | Browser name, or Internal Service |
browser_version | String | Browser version |
os | String | Operating system |
host | String | Request host/domain |
project_id | String | Project ID associated with the event |
details | String | Additional event details |
resources | String (JSON) | Affected resources (serialized JSON) |
Event Types
The system tracks the following event categories. The complete list of events is defined in the application source code and may be updated across releases.Authentication & User
| Event | Description |
|---|---|
signup | User registration |
login | User login |
logout | User logout |
sso | Single Sign-On login |
sso_signup | SSO registration |
user_settings_updated | User settings changed |
user_password_changed | Password changed |
user_mfa_enabled | MFA enabled |
user_mfa_disabled | MFA disabled |
user_mfa_verified | MFA verification succeeded |
user_mfa_failed | MFA verification failed |
Integrations
| Event | Description |
|---|---|
git_connected | Git repository connected |
gitlab_connected | GitLab connected |
gitlab_conn_failed | GitLab connection failed |
Project Operations
| Event | Description |
|---|---|
project_created | Project created |
project_deleted | Project deleted |
project_member_invited | Project member invited |
project_member_added | Project member added |
git_project_imported | Project imported from Git |
trigger_project_sync | Project sync triggered |
trigger_project_import_page_explore | Project import page exploration |
update_project_import_page | Project import page updated |
configure_project_plugin | Project plugin configured |
Code Generation & Sync
| Event | Description |
|---|---|
code_to_erd_trigger | Code to ERD conversion |
code_to_natural_language_trigger | Code to natural language conversion |
trigger_frontend_code_generate | Frontend code generation |
trigger_api_sync | API sync triggered |
trigger_business_logic_sync | Business logic sync triggered |
Business Logic & API
| Event | Description |
|---|---|
business_logic_to_api | Business logic added to API |
remove_business_logic_from_api | Business logic removed from API |
create_new_api | New API created |
Documents
| Event | Description |
|---|---|
docs_created | Document created |
docs_updated | Document updated |
docs_deleted | Document deleted |
docs_moved | Document moved |
docs_renamed | Document renamed |
docs_folder_deleted | Document folder deleted |
export_document | Document exported |
export_folder | Folder exported |
import_documents | Documents imported |
triggered_translate | Translation triggered |
ui_ux_document_trigger | UI/UX document triggered |
trigger_document_sync | Document sync triggered |
Tickets & Testing
| Event | Description |
|---|---|
create_ticket | Ticket created |
update_ticket_use_cases | Ticket use cases updated |
trigger_ticket_sync | Ticket sync triggered |
generate_test_cases | Test cases generated |
regenerate_test_cases | Test cases regenerated |
generate_project_import_page_test_cases | Project import page test cases generated |
delete_test | Test deleted |
UI/Screens
| Event | Description |
|---|---|
create_screen_preview | Screen preview created |
create_screen | Screen created |
Data Management
| Event | Description |
|---|---|
create_table_definition | Table definition created |
bulk_delete_block | Bulk block deletion |
Organization Management
| Event | Description |
|---|---|
deactive_organization | Organization deactivated |
organization_member_invited | Organization member invited |
organization_member_added | Organization member added |
organization_member_removed | Organization member removed |
organization_owner_changed | Organization owner changed |
organization_integration_configured | Organization integration configured |
Team Management
| Event | Description |
|---|---|
team_created | Team created |
team_updated | Team updated |
team_deleted | Team deleted |
team_member_invited | Team member invited |
team_member_added | Team member added |
team_member_removed | Team member removed |
add_members_to_team | Members added to team |
LLM & AI
| Event | Description |
|---|---|
create_llm | LLM created |
update_llm | LLM updated |
delete_llm | LLM deleted |
organization_llm_available_updated | Organization LLM availability updated |
default_company_model_changed | Default company model changed |
Agents & MCP
| Event | Description |
|---|---|
agent_created | Agent created |
agent_updated | Agent updated |
agent_deleted | Agent deleted |
agent_model_changed | Agent model changed |
agent_context_updated | Agent context updated |
thread_created | Thread created |
thread_message_sent | Thread message sent |
subthread_created | Subthread created |
mcp_server_configured | MCP server configured |
mcp_tool_registered | MCP tool registered |
mcp_tool_unregistered | MCP tool unregistered |
Apps
| Event | Description |
|---|---|
apps_installed | App installed |
apps_uninstalled | App uninstalled |
apps_configured | App configured |
apps_trigger_register | App trigger registered |
API Keys & Feature Management
| Event | Description |
|---|---|
create_api_key | API key created |
revoke_api_key | API key revoked |
update_feature_toggle | Feature toggle updated |
export_token_usage_csv | Token usage CSV exported |
Billing & Subscriptions
| Event | Description |
|---|---|
subscription_checkout | Subscription checkout |
subscription_upgraded | Subscription upgraded |
subscription_canceled | Subscription canceled |
subscription_payment_failed | Subscription payment failed |
seat_quantity_changed | Seat quantity changed |
billing_portal_accessed | Billing portal accessed |
plan_config_created | Plan config created |
plan_config_updated | Plan config updated |
Admin Operations
| Event | Description |
|---|---|
admin_organization_activate | Admin activated organization |
admin_organization_deactivate | Admin deactivated organization |
admin_organization_create | Admin created organization |
admin_user_activate | Admin activated user |
admin_user_deactivate | Admin deactivated user |
admin_user_delete | Admin deleted user |
Log Forwarding
FluentBit collects audit logs from the Sidekiq pod and forwards them to one or more external destinations. All output destinations are disabled by default.AWS S3
The AWS S3 output uses the same AWS credentials configured in
storage.secret.aws. Logs are stored with the key format /%Y/%m/%d.log.Azure Data Explorer
Forwarding audit logs to Azure Data Explorer (ADX / Kusto) requires Azure-side resources that must exist before the FluentBit sidecar starts. Configuring only the Helm values produces a deployment that looks healthy — the sidecar runs and ingestion calls succeed — but no usable rows appear in the table until every prerequisite below is in place.Prerequisites
The following must exist on the Azure side before enabling the output. Treat the commands below as examples — refer to the linked Azure documentation for the authoritative procedure for each resource.Kusto cluster
Provision an Azure Data Explorer cluster. See Create an Azure Data Explorer cluster.
Database
Create a database inside the cluster. The database name is used in
AZURE_DATA_EXPLORER_DB_NAME.Table with the audit-log schema
Run the following KQL inside the database. Column names and types must match exactly — wrong types cause FluentBit to silently drop rows.
JSON ingestion mapping
Create an ingestion mapping that tells Kusto how to extract each column from the incoming FluentBit payload. The mapping name is used in
AZURE_INGESTION_MAPPING_REFERENCE.Enable streaming ingestion (recommended)
Without streaming ingestion, rows are batched on a multi-minute schedule. For near-real-time audit visibility, enable the policy on the table:Streaming ingestion must also be enabled at the cluster level. See Streaming ingestion policy.
Entra ID application and database role
Create an Entra ID app registration with a client secret, then grant its service principal the See Manage database security roles for the authoritative procedure.
Ingestor role on the database. Database User is not sufficient — Kusto’s ingestion path requires Ingestor specifically.If your Kusto cluster restricts public network access, add the egress IP of the Kubernetes cluster running Jitera (typically the NAT Gateway public IP) to the cluster’s allowed sources.
Helm values
Once the prerequisites are in place, enable the output:The environment variable name
AZURE_TANANT_ID is a known misspelling in the Helm chart. Keep this spelling in your values file until the chart is updated; using AZURE_TENANT_ID will leave the FluentBit output unconfigured and silently disable ingestion.Verifying ingestion
After deploying, confirm rows are arriving:timestamp is populated but every other column is empty, the ingestion mapping is using $.<field> paths instead of $.log.<field> — re-create the mapping with the corrected paths from the JSON ingestion mapping step above.
For FluentBit-side diagnosis:
Azure Blob Storage
You can enable multiple output destinations simultaneously. For example, you can forward audit logs to both AWS S3 and Azure Data Explorer at the same time.
How It Works
- Event trigger - GraphQL mutations or controllers call the audit logging helper
- Job queuing - The event is queued to a Sidekiq background job
- Processing - The job extracts user agent and IP details from the request context
- Validation - Required fields (
event,user_id,timestamp) are validated - Logging - A JSON entry is appended to
/var/log/audit.loginside the Sidekiq pod - Collection - The FluentBit sidecar tails the log file
- Filtering - FluentBit extracts the
eventfield for dynamic tagging - Forwarding - Logs are forwarded to the configured output destinations
Example Log Entries
User signup event
User signup event
Code generation event
Code generation event
Internal service event
Internal service event

