Skip to content
This repository was archived by the owner on Aug 19, 2026. It is now read-only.
This repository was archived by the owner on Aug 19, 2026. It is now read-only.

feat: Full-text search indexing service (Go + Redis) #598

Description

@dnviti

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:

  • 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

  1. Phase 1: Index connections + secret metadata. Frontend falls back to client-side search if service is unavailable.
  2. Phase 2: Index audit events + recordings. Add date-range and action-type filters.
  3. 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)

Labels

enhancement, backend, search

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions