You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Aug 19, 2026. It is now read-only.
Add a dedicated Go microservice (search-indexer) that maintains a Redis-backed full-text search index for the Arsenale platform. This will replace the current client-side fuzzy search (cmdk) with server-side indexed search, enabling faster and more comprehensive results.
Motivation
The frontend command palette (Cmd+K) currently performs client-side fuzzy matching using cmdk. This works for small datasets but doesn't scale to:
Audit events (millions of entries)
Large connection inventories across tenants
Full-text search across secret metadata, recordings, settings
A server-side index would provide instant, relevance-ranked results across all entities.
Architecture
New service: search-indexer (Go, runs in its own container)
Storage: Redis Search (RediSearch module) for full-text indexing
Data flow: Subscribes to change events from control-plane-api (via SSE or internal webhook) and maintains the index
API: REST endpoint (GET /api/search?q=...&scope=...) that the frontend queries
Port: TBD (follows the existing service port allocation pattern)
Entities to Index
Entity
Fields
Priority
Connections
name, host, type, description, folder name
Phase 1
Secrets (metadata only)
name, type, tags, description
Phase 1
Audit Events
action, target type, user email, IP
Phase 2
Recordings
connection name, protocol, date
Phase 2
Settings Sections
label, description, keywords
Phase 3
Users
username, email, role
Phase 3
Teams
name, description
Phase 3
Phased Rollout
Phase 1: Index connections + secret metadata. Frontend falls back to client-side search if service is unavailable.
Phase 2: Index audit events + recordings. Add date-range and action-type filters.
Phase 3: Full-text search across all entities. Replace cmdk matching entirely.
Frontend Integration
The existing CommandPalette.tsx would gain an optional useServerSearch mode:
When the indexer is available (feature-flagged), queries go to the API
Results are rendered in the same CommandGroup / CommandItem structure
Fallback to client-side search when the service is down
Infrastructure
Container image built alongside other Go services in backend/cmd/
Added to the Helm chart and Docker Compose dev stack
Redis Search module enabled on the existing Redis instance (or a dedicated one)
Summary
Add a dedicated Go microservice (
search-indexer) that maintains a Redis-backed full-text search index for the Arsenale platform. This will replace the current client-side fuzzy search (cmdk) with server-side indexed search, enabling faster and more comprehensive results.Motivation
The frontend command palette (Cmd+K) currently performs client-side fuzzy matching using
cmdk. This works for small datasets but doesn't scale to:A server-side index would provide instant, relevance-ranked results across all entities.
Architecture
search-indexer(Go, runs in its own container)control-plane-api(via SSE or internal webhook) and maintains the indexGET /api/search?q=...&scope=...) that the frontend queriesEntities to Index
Phased Rollout
Frontend Integration
The existing
CommandPalette.tsxwould gain an optionaluseServerSearchmode:CommandGroup/CommandItemstructureInfrastructure
backend/cmd/Labels
enhancement,backend,search