-
released this
2026-04-22 06:30:20 +00:00 | 44 commits to main since this releaseWhat's New
Saved Searches (Bookmarks)
- Save filter combinations with a name and recall them instantly.
- Save filters button in the filters panel.
- Saved searches appear as pill chips — click to apply, × to delete.
- Scoped per user (
created_byfrom tokensub).
AI Event Explanation with GUID Resolution
- New
POST /api/events/{id}/explainendpoint sends an event + related events to the LLM for a security-focused explanation. - GUID resolution: extracts UUIDs from the raw event and resolves them via Microsoft Graph (users, groups, service principals, devices) before sending to the LLM.
- The LLM now sees human-readable names instead of raw GUIDs.
Operation-Level Privacy Gating
- Replaced broad service-level blocking with fine-grained operation-level privacy controls.
PRIVACY_SENSITIVE_OPERATIONShides specific operations (e.g.MailItemsAccessed,Send,Search-Mailbox) across all services.PRIVACY_SERVICESstill available for broad service-level blocking if needed.- Both gated by
PRIVACY_SERVICE_ROLES(e.g.SecurityAdministrator,ComplianceAdministrator). - Unauthorized users still see admin actions like
Add-MailboxPermissionandSet-Mailbox, but not email reading/sending logs.
UI Polish
- Teams added to default noisy service exclusion alongside Exchange and SharePoint.
- Filter state persisted to
localStorageand restored on reload. - Result pills now treat
"True"as green (success). - Copy and Explain buttons in the raw event modal.
Upgrade Notes
docker compose pull && docker compose up -dOptional: configure privacy gating in
.env:PRIVACY_SENSITIVE_OPERATIONS=MailItemsAccessed,Search-Mailbox,Send,ChatMessageRead PRIVACY_SERVICE_ROLES=SecurityAdministrator,ComplianceAdministratorDownloads
-
released this
2026-04-22 04:48:47 +00:00 | 49 commits to main since this releaseWhat's New
Filter Persistence
- Filter state is now saved to
localStorageand restored on page reload. - Includes: actor, services, operation, result, time range, tags, limit, and search.
- Saved services are validated against current API options — stale entries are silently dropped.
Smarter Defaults
- Exchange and SharePoint are now unchecked by default.
- These services generate extremely high volumes of noise (e.g.
MailItemsAccessed) and are rarely relevant for security investigations. - The Clear button resets to this default set rather than selecting all services.
UI Polish
- Result pills now treat
"True"as a success state (green) in addition tosuccess,succeeded,ok, andpassed. - This fixes the orange pill colour on common Exchange admin events.
Upgrade Notes
docker compose pull && docker compose up -dNo configuration changes required.
Downloads
- Filter state is now saved to
-
released this
2026-04-21 20:28:52 +00:00 | 51 commits to main since this releaseWhat's New
AI Event Explanation
- New
POST /api/events/{id}/explainendpoint sends an audit event (plus up to 10 related events from the last 24h) to the LLM for a security-focused explanation. - The LLM explains what happened, who performed the action, whether it's typical or suspicious, any security implications, and recommended next steps.
- Available in the raw event modal — click Explain when viewing any event.
- Gracefully falls back when
LLM_API_KEYis not configured.
Copy Raw Event
- New Copy button in the raw event modal copies the full JSON to the clipboard.
Upgrade Notes
docker compose pull && docker compose up -dNo configuration changes required.
Downloads
- New
-
released this
2026-04-21 09:28:32 +00:00 | 53 commits to main since this releaseWhat's New
MCP Server over SSE (production-ready)
- New HTTP/SSE MCP transport at
GET /mcp/sseandPOST /mcp/messages/ - Reuses existing OIDC Bearer token validation — requires a valid Entra token when
AUTH_ENABLED=true - Same four tools as the stdio server:
search_events,get_event,get_summary,ask - Shared tool handlers extracted to
mcp_common.py(used by both stdio and SSE transports) - Mounted inside FastAPI when
AI_FEATURES_ENABLED=true
UI Polish
- Page title changed from "AOC Events" → "Admin Operations Center"
- Hero heading changed from "Directory Audit Explorer" → "Audit Log Explorer"
- Subtitle updated to mention all data sources: Entra, Intune, Exchange, SharePoint, Teams
- Filter section moved before the Ask panel for better flow
Upgrade Notes
docker compose pull && docker compose up -dNo configuration changes required.
Downloads
- New HTTP/SSE MCP transport at
-
released this
2026-04-20 16:11:31 +00:00 | 58 commits to main since this releaseWhat's New
AI Feature Flag (
AI_FEATURES_ENABLED)- Gate all AI/natural-language features with a single environment variable.
- When
false, the/api/askendpoint is completely unregistered and the "Ask a question" panel is hidden from the UI. - New
GET /api/config/featuresendpoint exposes feature flags to the frontend.
MCP Server (
backend/mcp_server.py)- Standalone Model Context Protocol server for Claude Desktop, Cursor, and other MCP clients.
- Connects directly to MongoDB (bypasses FastAPI auth layer — run only in trusted environments).
- Exposes four tools:
search_events— filter by entity, service, operation, result, and time range.get_event— retrieve raw event JSON by ID.get_summary— aggregated activity summary (by service, operation, result, top actors) for the last N days.ask— natural language query that returns recent matching events.
Natural Language Query (
/api/ask)- Ask questions like "What happened to device ABC123 in the last 3 days?"
- Intent-aware service filtering: broad queries automatically exclude high-volume Exchange/SharePoint noise.
- Smart sampling: when datasets are large, failures and high-value services are prioritized for LLM context.
- Aggregated overviews for datasets with >50 events.
- Respects active UI filters (services, actor, operation, result, tags).
- Azure OpenAI / MS Foundry compatible (
api-keyheader,api-version,max_completion_tokens).
Version Endpoint
GET /api/versionreturns the running version (baked into the Docker image at build time).- Displayed as a badge in the UI header.
Upgrade Notes
- Pull the new image:
docker compose pull && docker compose up -d - Optionally set
AI_FEATURES_ENABLED=falsein.envto disable AI features. - Optionally configure
LLM_API_KEY,LLM_BASE_URL,LLM_MODELfor the/api/askendpoint. - For MCP: install
mcpfromrequirements.txtand configure your MCP client to runpython backend/mcp_server.py.
Downloads
-
AOC v1.2.7
Stablereleased this
2026-04-20 15:41:21 +00:00 | 59 commits to main since this releaseIntent-aware querying
- Questions like 'what happened to my laptop' automatically scope to Intune/Device events
- 'Any new users' scopes to Directory/UserManagement
- Broad questions ('what happened last week') exclude noisy Exchange/SharePoint logs by default
Smart sampling
- MongoDB fetches up to 1000 events, then curates the best 200 for the LLM
- Failures are always included
- High-admin-value services (Intune, Directory, Device) are prioritised
- Exchange/SharePoint only included when explicitly asked for
Docker image:
git.cqre.net/cqrenet/aoc-backend:v1.2.7Downloads
-
AOC v1.2.6
Stablereleased this
2026-04-20 15:29:10 +00:00 | 61 commits to main since this releaseWhat's new
- Natural language query with Azure OpenAI / MS Foundry support
- Filter-aware queries
- Aggregated event overviews for large result sets
- Version badge in header
- Production hardening: non-root container, Gunicorn, nginx, internal-only MongoDB
Docker image:
git.cqre.net/cqrenet/aoc-backend:v1.2.6Downloads
-
AOC v1.2.5
Stablereleased this
2026-04-20 15:24:20 +00:00 | 63 commits to main since this releaseNatural language query (/api/ask)
Ask plain-English questions and get AI-generated answers backed by audit logs. Supports OpenAI, Azure OpenAI, and MS Foundry.
Filter-aware queries
The ask endpoint respects the UI filter panel.
Scales to thousands of events
Large result sets are pre-aggregated (counts by service/action/result/actor + failure highlights + 50 recent samples).
Version display
Badge in the header shows the running version.
Production hardening
Non-root container, Gunicorn workers, internal-only MongoDB, nginx reverse proxy.
Downloads
-
v1.0.3
Stablereleased this
2026-04-16 16:51:14 +00:00 | 84 commits to main since this releaseRelease v1.0.3 - Bulk tagging and tag-based filtering
Added
include_tags/exclude_tagsquery params for/api/eventsPOST /api/events/bulk-tagsendpoint for bulk tagging matching events- Frontend tag filters (Include tags / Exclude tags)
- Frontend Bulk tag matching button with append/replace modes
Changed
- Improved filter panel layout
Downloads
-
v1.0.2
Stablereleased this
2026-04-16 10:13:36 +00:00 | 86 commits to main since this releaseRelease v1.0.2 - First automated Gitea registry build
Changed
- CI/CD: release workflow now pushes Docker images to
git.cqre.net/cqrenet/aoc-backend docker-compose.ymlpulls images from Gitea container registry- Migrated all workflows from GitHub Actions to Gitea Actions
Downloads
- CI/CD: release workflow now pushes Docker images to