Multi-tenant in-app search with open source engines

For SaaS products that must keep each customer's search data separate, this page compares tenant tokens, scoped keys and per-tenant indexes across Meilisearch, Typesense and OpenSearch, with the memory and rollout each choice implies.

On this page

Multi-tenant in-app search with open source engines: why isolation decides the build

For a SaaS team adding search to a product that already holds customer data, tenant isolation, not relevance, is the first design decision. A search index is a second copy of customer records, and a result that leaks one tenant's documents to another is a breach regardless of how good the ranking is. Relevance tuning can be adjusted after launch. Isolation decisions shape the index layout, the key model, the indexing pipeline and the operating cost, so they are expensive to change later. The short answer is that Meilisearch and Typesense fit tenant-scoped keys well. Meilisearch's README lists multi-tenancy that personalizes results for any number of application tenants, and its API keys can be restricted to specific indexes and filters, so the application can issue a search key that only returns one tenant's documents. Typesense supports scoped API keys and tenant-scoped search keys in the same way. Confirm in each engine's current documentation exactly which key parameters can embed a tenant filter, how the key is signed, and whether a key can be revoked without rebuilding the index.

OpenSearch fits better when role-based document-level security and existing Elasticsearch-style estates matter. Its Security plugin provides role-based access control, document-level and field-level security, field masking and audit logs, and it can authenticate users through SAML, OpenID Connect or LDAP. That lets the search layer enforce permissions that already live in the identity provider, which matters when results depend on group membership rather than a single tenant boundary. The cost is operational weight: a cluster with node roles, replicas and a security configuration is a larger system to run. Whichever engine is chosen, test isolation before indexing real data. Build a test with two tenants that share similar product or document names, issue keys as the front end would, and attempt to read the other tenant's records with edited filters, expired keys and direct calls to the engine. Decide whether the indexing pipeline writes one index per tenant or one shared index with a tenant field, because that choice sets the memory profile, the reindexing effort and how a single tenant is deleted for offboarding.

Which isolation requirements shape a multi-tenant search build

This table maps each isolation requirement to its likely source, whether customer contracts, your own security policy or an engine capability, and to the design choice it pushes toward. Read it before picking tokens, keys, indexes or document-level security, because a single requirement such as per-tenant deletion or data location can rule out an option early.

RequirementWhere it comes fromWhat it means for the build
Tenant isolation proven by contractCustomer contracts and data processing termsAsk whether contracts require physically separate indexes or whether logical separation by key is accepted. Separate indexes give the clearest evidence per customer, while scoped keys share one index and need strict testing.
Tenant isolation evidenced to a customer auditCustomer audit rights and your own security policyKeep a written mapping of each tenant to its index, key or filter value, and retain test results showing that one tenant's key cannot read another tenant's documents.
Permission-aware results within one tenantYour own access control model and customer role requirementsTenant tokens or scoped keys separate customers but do not hide records from users inside the same tenant. Store role or group identifiers as filterable attributes, or use document-level security where the engine supports it, and confirm the chosen engine's behavior with a test.
Filtering that cannot be bypassed by the browserYour own security policyGenerate search keys on the server with embedded filters and short expiry. Never let client code choose the tenant filter, because a tampered request would otherwise cross tenant boundaries.
Deletion when a customer leavesCustomer contracts and data retention termsPer-tenant indexes make deletion a single index removal, with backups handled separately. In a shared index, deletion requires filtered document removal plus a documented check that no copies remain in snapshots or logs.
Per-tenant data locationCustomer contracts, regional rules and your own residency policyA tenant that requires a specific region may need its own cluster or node group, which changes cost and operations. Confirm where each engine's query logs and snapshots are stored, not only where the index lives.
Auditable access and query recordsCustomer audit rights and your own security policyDecide whether query logs contain tenant identifiers and user text, and who may read them. OpenSearch offers audit logs and field-level controls, while Meilisearch and Typesense need logging set up in the surrounding stack. Confirm each capability in your environment.
Per-tenant capacity and noisy-neighbor limitsYour own service levels and customer commitmentsA very large tenant can consume memory and CPU that smaller tenants share. Typesense keeps keyword indexes in RAM, so sizing must cover the largest tenant set, and separate indexes or clusters may be needed for the biggest customers.

Tenant tokens, scoped keys or per-tenant indexes: how each pattern isolates data

With this pattern, one index holds many tenants' documents, and each search carries a credential that limits what it can return. Your application signs or issues that credential server side, embedding a filter such as a tenant identifier, so the browser never chooses the tenant. The Meilisearch README describes multi-tenancy that personalizes results for any number of application tenants, and its tenant token approach is the usual starting point for this pattern. The engine enforces only what the key allows, so the key definition is the isolation control.

  • Key issuance: Only your backend should hold the master or admin key. Front ends receive short-lived search credentials generated for a single tenant.
  • Filter scope: Confirm that the filter embedded in the key cannot be removed or widened by a request parameter.
  • Expiry and rotation: Check how keys expire and how rotation is handled without a search outage.
  • Index-wide settings: Keys that can change settings or documents can reach every tenant, so keep administrative keys out of the search path.
  • Logging: Record which key and tenant served each query, so cross-tenant access can be traced.

Before you commit, confirm in the current Meilisearch key-management documentation how tenant tokens are created, which key they derive from, and whether any expiry or nesting rules apply to your version.

Which open source engine fits which tenant model

Each engine isolates tenants in a different way, and the right choice depends on how many tenants you serve and how strictly results must follow each user's permissions. The cards below cover the three engines and the index design decision that sits underneath them.

Meilisearch for tenant-scoped search

Meilisearch's Community Edition is MIT licensed, and its README lists multi-tenancy that personalizes results for any number of application tenants. That makes it a fit for SaaS products that want per-customer results with a small operations footprint. Check the licence boundary before you build: the Enterprise Edition is governed by a commercial license or the Business Source License 1.1, and it is not permitted in production without a commercial agreement. Confirm which features your tenant isolation depends on are in the edition you deploy.

Typesense for in-memory tenant indexes

The Typesense server is GPL-3.0 while its client libraries are Apache licensed, so your application code can stay under its own terms. Typesense holds its search structures in memory, which makes RAM planning central to tenant design. Keyword search typically needs 2 to 3 times the size of the searchable fields in RAM, so many small tenant collections and one large shared collection have different memory profiles. Raft clustering with three or five nodes is the high availability pattern to plan for.

OpenSearch for document-level security

OpenSearch is released under Apache License 2.0, and its Security plugin provides role-based access control, document-level and field-level security, field masking, audit logs and TLS. Those controls let one shared index enforce what each user may see, which suits products where access rules vary within a tenant, not just between tenants. SAML, OpenID Connect, LDAP and other identity backends connect it to existing directories. The cost is operating a heavier cluster, so confirm your team can run node roles, replicas and upgrades.

Per-tenant indexes versus filtered shared indexes

A per-tenant index isolates data by design and simplifies deletion and export for one customer, but the number of indexes grows with every tenant and each one carries its own memory and maintenance overhead. A shared index with a tenant filter keeps operations simple at high tenant counts, but every query must apply the filter correctly, and a missed filter is a data leak. Tenant tokens or scoped API keys can enforce the filter at query time. Decide on tenant count, tenant size and whether permissions change within a tenant before you choose.

Permission-aware results at query time

Results should respect what the signed-in user may see, not just which tenant they belong to. Engines differ here: OpenSearch can apply document and field rules natively, while Meilisearch and Typesense rely on your application to pass filters or scoped keys that encode the user's rights. Test with users who hold different roles inside one tenant, and confirm that facet counts, suggestions and highlighted snippets do not reveal hidden records.

Indexing pipelines from the application database

Each engine needs a pipeline that keeps the index aligned with the application database, including deletions, permission changes and tenant offboarding. Meilisearch and Typesense accept document batches over their APIs, and OpenSearch uses bulk requests. Design the pipeline to reindex one tenant without downtime for others, and record which tenant and version each document came from so that a failed sync can be found and repaired.

How much RAM a multi-tenant index needs

Typesense keeps its search data in memory, so RAM is usually the first sizing constraint for in-app search. The Typesense system requirements guide says keyword search typically needs 2 to 3 times the size of the searchable fields in RAM. Vector fields add to that: each vector needs 7 bytes of memory per dimension, so a 768-dimension embedding costs roughly 5 KB per document before index overhead. If you enable built-in ML models for embedding generation, budget roughly 2 to 6 GB of extra RAM on top of the data. Measure the searchable field size per record from your own documents, multiply by the tenant record counts, and only then apply the guide's multipliers. Per-tenant indexes multiply this overhead. Each collection carries its own fixed structures, so a platform with thousands of small tenants pays the base cost thousands of times, and a large number of tiny collections can consume more memory than the same data in one collection. A shared collection with a tenant_id field and a scoped API key filter (filter_by) keeps one set of structures and moves the cost into a single, larger dataset that is easier to size and cluster. The trade-off is that a bad filter or key scope becomes a cross-tenant data exposure, so the tenant isolation test must run against the production key configuration. Before you commit to a design, ask any implementation partner for a sizing model built on your data: records per tenant, searchable field sizes, vector dimensions, growth assumptions and the number of nodes needed for a three- or five-node Raft cluster. Ask them to show the memory figure for your largest tenant, your smallest tenant and your total, and to state which multipliers they used and why. Confirm the current Typesense release and its memory guidance before you finalize, because the figures above come from the guide as supplied.

Building the indexing pipeline from the application database

The sequence below moves tenant data from the application database into a search engine in a way that keeps every document traceable to one tenant, stays current after edits, and can be rebuilt without guessing. Each step produces a artifact that the next one depends on.

  1. Map the tenant model and document shape

    Before any code runs, the engineering team lists which tables hold searchable content, how each record links to a tenant, and which fields users may see under each role. The output is a documented index schema: one document per searchable entity, a mandatory tenant identifier on every document, filterable and sortable attributes declared up front, and a list of fields excluded from the index. Ask the implementation partner to show this schema in writing and to confirm that a missing tenant identifier fails the write rather than creating an untenanted document.

  2. Capture changes from the source database

    The pipeline needs a reliable record of inserts, updates and deletes in the application database. Common options are an outbox table written in the same transaction as the business change, or change data capture that reads the database log. Either way, each change event carries the tenant identifier and an entity identifier. The step is complete when a test edit in a staging tenant appears as an ordered event that the indexer can replay, and when the team has confirmed how the chosen method behaves during database failover.

  3. Backfill existing records in batches

    Existing data has to be loaded before live changes matter. The backfill reads each tenant's records in pages, transforms them with the same code path as live events, and imports them in batches sized to the engine's documented import method. Run the backfill against a copy of production data first to measure memory use and import time on the target engine, since index size drives RAM needs. The step is complete when record counts per tenant in the database match counts in the index, and a sample of documents has been checked field by field.

  4. Write tenant-tagged documents

    The indexer applies each change event as an upsert keyed on the entity identifier and writes the tenant identifier as a filterable attribute, or routes the document to a per-tenant index if that design was chosen. Permission data, such as role or group identifiers that determine visibility, is written with the document or resolved at query time, and the choice is recorded in the schema. The step is complete when a test user in one tenant cannot retrieve a document from another tenant through any search parameter, including empty queries and pagination.

  5. Handle deletes and tenant offboarding

    Deleting a single record must remove its document, and that removal must be replayed if the indexer is down. Offboarding a whole tenant needs its own procedure: delete by tenant filter for shared indexes, or drop the tenant index for per-tenant designs, plus removal of its API keys and backups according to the retention policy. The output is a written offboarding runbook with a check that confirms zero documents remain for that tenant identifier. Confirm with the vendor how deletes by filter are performed and whether they are asynchronous.

  6. Run reconciliation jobs

    Event streams miss things, so a scheduled job compares source and index for each tenant, looking for missing documents, stale versions and orphaned documents whose source record was deleted. Discrepancies are either repaired by re-indexing the affected records or logged for review. The step is complete when the reconciliation report can be produced on demand and the team has tested it by deliberately removing a document from the index and confirming the job restores it.

  7. Document and test the reindex procedure

    The last step turns the pipeline into something operations can run without the original builders. The team writes the full reindex procedure: how to build a new index version alongside the live one, how to switch traffic, how to roll back, and how to rerun the backfill for a single tenant. The procedure is tested in a non-production environment and the result is recorded. The deliverable is the schema document, the offboarding runbook and the tested reindex procedure, handed over with the source code and configuration.

Integration points and deployment patterns for SaaS search

A multi-tenant search feature touches four places: the request path through your API, the process that writes records into the index, the cluster itself, and the logs that prove who searched what. Each one needs a named owner for tenant tagging, because a single missed filter at any point exposes another customer's records.

Application API gateway

The gateway or backend service runs in your application accounts and is the only component that talks to the search engine from the browser path. It resolves the authenticated tenant from the session, then either issues a scoped search key or appends a tenant filter before forwarding the query. The application owns this step, so verify that clients cannot supply their own tenant identifier and that the search key expires with the session. Check the gateway's token minting code in every release.

Indexing worker

A background worker reads changes from your application database and writes documents to the engine, typically through a queue so that failed writes can be retried. The worker stamps every document with its tenant identifier at write time, and that stamp is what later filters and per-tenant index routing depend on. Confirm that the worker cannot write a document under one tenant's identifier using another tenant's data, and that deletions and tenant offboarding propagate to the index. Plan for a full reindex path that runs without the live queue.

Search cluster in your cloud accounts

The engine runs in the same cloud accounts, networks and regions as the product, with private addressing and no public endpoint. The cluster owner is responsible for choosing the tenancy model, sizing memory for the indexed fields, and enforcing transport encryption between application, worker and engine. For Typesense, a production cluster is normally three or five nodes. Confirm the memory headroom per tenant before onboarding large customers, because keyword indexes are held in RAM.

Observability and audit log path

Query logs, indexing errors and access events flow to your logging stack, and they often contain customer search terms that count as personal data. The audit owner must record the tenant identifier on each event, and must confirm that logs from one tenant can be retrieved without exposing another tenant's queries. OpenSearch's Security plugin offers audit logs, role-based access and field-level security if you use it as the engine. Set retention per tenant contract, and test that the audit trail still shows a tenant's activity after an index rebuild.

Evidence a SaaS customer or auditor will ask for

This table lists the evidence a SaaS customer, their security team or an external assessor is likely to request for in-app search, and the component that produces each item. Use it to decide which logs, configuration exports and test records to design in from the start. DeployOpen prepares this evidence for your own assessor and does not issue attestations or audit reports.

Evidence itemWhat it showsComponent that produces itGap to check early
Tenant isolation test resultsTenant A cannot retrieve Tenant B documents through any search, filter or pagination pathTest suite run against the search endpoint, built by your team or DeployOpenTests that only cover the UI and skip direct API calls
Scoped API key configurationWhich keys exist, which tenant filter each embeds, expiry and permitted actionsKey issuance logic in the application, plus the engine's key list exportKeys issued with admin rights or without an expiry
Tenant token or filter generation recordsThat every search request carries a tenant constraint generated server-sideApplication logs of token issuance and the search gatewayClient code that sends the tenant ID as a free parameter
Per-tenant index inventoryFor silo designs, which index belongs to which customer and its settingsIndex listing from the engine and the provisioning pipeline recordOrphaned indexes left after a tenant leaves
Search access audit logsWho or which service queried which index, when, and with which keyOpenSearch audit logs when enabled, or application request logs for Meilisearch and TypesenseEngines that do not log query-level access by default, so confirm the logging you need
Indexing pipeline recordsThat source records are copied to the right tenant index and that failed syncs are retriedPipeline job logs from the application database change feed or batch jobNo reconciliation between database counts and index counts
Deletion recordsThat a deleted tenant's documents are removed from the index, backups and replicas within a stated windowDeletion job logs, index delete responses and snapshot retention settingsSnapshots that still hold deleted customer data after the stated window
Engine administrator access reviewsWho holds admin credentials for the engine, reviewed on a set scheduleIdentity provider group exports, OpenSearch Security role mappings or Typesense and Meilisearch key inventoriesShared master keys used by engineers and never rotated

Questions SaaS teams ask before adding multi-tenant search

What does multi-tenant search implementation cost depend on?

Cost depends on how many engines, tenants, data sources and integration points are in scope, and on who carries each part of the work. The main cost components are infrastructure (servers or a dedicated cluster, plus RAM sized to the indexed data), the implementation of tenant isolation and the indexing pipeline, testing, and ongoing operations such as upgrades, backups and monitoring. Infrastructure and staff time recur, while design and build are usually one-time. Ask any partner for a fixed-scope quote that lists each tenant model, each data source, the sync method, the test plan and the support terms after go-live. Published SaaS prices are a useful comparison point, but they do not include your own engineering time.

How long does a multi-tenant search rollout take?

The timeline is driven by the isolation model you choose, the number of indexed collections, the complexity of permission rules and how much existing data needs migrating. A single shared index with tenant-scoped keys is typically simpler to deliver than one index per tenant, which adds provisioning and reindexing work for every new customer. Expect extra time for permission-aware results, because those rules must be agreed with product and security owners before code is written. Ask for a written schedule with milestones for design sign-off, a staging environment, load testing and cutover, and confirm which of these depend on your team's availability.

Can our team build multi-tenant search without a partner?

Yes, many teams can, provided they have engineers who know the chosen engine and who can own isolation, indexing and operations over the long term. Meilisearch's README describes multi-tenancy that personalizes results for any number of application tenants, and the Community Edition is MIT licensed, so the software itself is not the barrier. The harder parts are the ones that recur: securing tenant tokens or keys, keeping the index in step with the application database, sizing memory, and running upgrades and backups. Write down which of these your team will staff, then compare that against the scope of an implementation partner before deciding.

What does the work need from our engineers?

Your engineers provide the application context that the search layer cannot infer: the tenant model, the access rules for each record, the database schema and the events that change content. They also need to review tenant token generation, decide how deletes and updates propagate, and own the on-call path when indexing lags. Plan for time from backend engineers for the indexing pipeline, from a security reviewer for the isolation design, and from a frontend engineer for the search UI. Ask the implementation partner to name the exact tasks they expect from your staff, so the internal commitment appears in the plan rather than surfacing mid-project.

How do we remove a tenant from the search index?

Removal should be a tested, logged procedure, not a manual clean-up. The typical sequence is to revoke the tenant's search keys or tokens first so no new queries succeed, then delete that tenant's documents from the index, and finally confirm that backups and replicas no longer hold the data where your retention policy says they should not. For a per-tenant index, the step is dropping the index. Ask how deletions are triggered from account closure, how long each step takes at your data volume, and how deletion is evidenced for a customer request. Confirm the exact behavior with the engine's documentation for the version you deploy.

How do we test that one tenant cannot see another tenant's results?

Test isolation with automated cross-tenant checks, not only manual review. Create synthetic tenants with distinct records, issue each tenant's scoped key or token, and assert that every query returns only that tenant's documents, including with empty queries, filters, pagination and highlighted snippets. Repeat the checks after each deployment and after schema changes. Include permission-aware cases, such as a user who loses access to a record, and confirm the index stops returning it after the change propagates. Ask any partner for the test cases, the evidence they produce and whether the tests can run in your own CI pipeline.

Does DeployOpen build the isolation and indexing layer for us?

DeployOpen plans, implements, integrates, hardens and documents self-hosted open-source platforms inside your own cloud accounts, data centers or air-gapped networks. For multi-tenant search, that can cover the engine deployment, the tenant isolation design, the indexing pipeline from your application database, cross-tenant security testing and the operational runbooks. Most engagements are fixed-scope, with deliverables and timelines agreed in writing before work starts, and ongoing support is available as a retainer. DeployOpen prepares evidence for compliance assessments but does not issue audit reports or certifications. Quotes follow from the written scope rather than a published price list.

Questions to ask an implementation partner on tenant isolation

Start with how the partner proves that one customer cannot see another customer's hits. Ask them to describe the cross-tenant leakage tests they run against your chosen design: whether they query each index or key with another tenant's identifier and expect zero results, whether they check that a tenant token or scoped key cannot widen its filter or be used to call write endpoints, and whether those tests run in CI on every change to the indexing code. Ask for the test inventory in writing, including which tests cover permission-aware results for users whose access changes between index updates. A partner who can only say that they review the code has not given you evidence.

Next, ask how scoped keys are rotated and how deletion is verified. Ask who holds the master or admin key, where it is stored, how a tenant's keys are reissued without an outage, and how old keys are revoked and confirmed revoked. For deletion, the question is whether the partner can show that a removed customer's documents, per-tenant index, snapshots and backups are gone within a window you set, and how they check this. Ask how the indexing pipeline handles failed writes: whether failed batches are retried, how a partial import is detected, and how the pipeline reconciles the index with the application database after an outage. Ask for a worked example of one failure and its recovery.

Finally, ask how RAM sizing is done and how acceptance is defined in the fixed scope. For RAM, the partner should state the method, not a guess: for example, whether they size keyword indexes from the searchable field volume, add vector memory per dimension, and leave headroom for built-in models, using the figures in each engine's own documentation. Ask them to confirm the sizing against your tenant count and growth. For scope, require a written list of acceptance tests with pass criteria, who runs them, and what happens if a test fails. Confirm which items are excluded, and what support follows go-live, before any work starts.

Rolling out tenant-scoped search in phases

The rollout moves from tenant data mapping to a production cutover in stages, so each isolation decision is tested with synthetic tenants and a limited customer group before every customer depends on search. Each phase ends with a written output that the next phase relies on.

  1. Map tenant data models and access rules

    DeployOpen works with your engineering and security leads to document how tenants, users, roles and resource permissions are stored in the application database, including shared tables, shared schemas and any customer-specific fields. The team also records which documents must be filtered by tenant, which must be filtered by role within a tenant, and which can be shared. This phase closes with a signed data map and a list of permission rules the search layer must reproduce, so the design is agreed before any engine is configured.

  2. Select engine and size the deployment

    The team chooses between Meilisearch, Typesense and OpenSearch using the tenancy model from the first phase, the expected number of tenants and documents, and your uptime requirements. Sizing is calculated from the searchable field volume, the number of vectors if semantic results are planned, and the availability design. Typesense keyword search typically needs 2 to 3 times the size of the searchable fields in RAM, so memory is estimated from your own field sizes, not a generic figure. The output is a written engine decision, a sizing worksheet and a hosting plan inside your cloud account or data center.

  3. Build the tenant isolation and indexing pipeline

    DeployOpen implements the chosen isolation method, whether tenant tokens, scoped API keys or per-tenant indexes, and builds the indexing pipeline that reads from the application database and writes documents with a tenant identifier. The pipeline covers initial bulk loads, incremental updates on record change, deletions and re-indexing after schema changes. Key scopes and index naming are documented in code and configuration. The phase is complete when a full load and an incremental change both reach the search index in a repeatable run.

  4. Test isolation with synthetic tenants

    Before any real customer data is indexed, the team creates synthetic tenants with overlapping record names, mixed roles and deliberately restricted documents. Test cases attempt cross-tenant queries, expired or altered tokens, filter bypass through query parameters and role changes that should remove access immediately. Results are logged and any leak is fixed and retested. The output is a test report covering each isolation method and permission rule from the data map, which your security team can review before the pilot starts.

  5. Run a pilot with a limited customer group

    A small, agreed group of customers is switched to the new search, with the existing search kept available as a fallback. The team monitors query latency, zero-result rates, indexing lag and any support tickets about missing or extra results. Your product team confirms relevance on real queries, and the pilot list of metrics is agreed beforehand. The phase closes with a pilot report that states which issues were found, which were fixed and whether the build is ready for general release.

  6. Cut over to production with a tested rollback

    The production cutover follows a written runbook that sets the switch order, the reindex steps, the monitoring checks and the criteria for reverting to the previous search. The rollback path is rehearsed before cutover, including restoring the prior index or routing traffic back to the fallback. Backups and snapshots are confirmed on the new cluster. The phase is complete when all tenants are on the new search, the monitoring is handed to your operations team, and the rollback has been tested in a non-production environment.

How DeployOpen scopes and supports multi-tenant search

DeployOpen plans, implements, hardens, documents and supports self-hosted search engines inside your own cloud accounts, data centers or air-gapped networks. For multi-tenant in-app search, the work starts with how tenant data is isolated, then moves through indexing, permission-aware results and operations, all agreed in writing before build starts.

How we scope

  • We map your tenancy model, customer count and data isolation requirements before choosing between tenant tokens, scoped keys and per-tenant indexes.
  • The written scope names the engine, edition, hosting location, indexing sources and the permission rules each search result must respect.
  • Engagements are fixed-scope, so deliverables, acceptance criteria and timelines are agreed in writing before work begins.

How we build

  • We build the indexing pipeline from your application database, including incremental updates and deletions when a tenant or record is removed.
  • We configure tenant isolation and test that a query scoped to one customer cannot return another customer's documents.
  • We size memory and node counts against your measured document volume, then load-test query latency for your largest tenants.

How we hand over

  • You receive architecture notes, configuration as code, runbooks for reindexing and key rotation, and the isolation test results.
  • Handover covers backup and restore steps, upgrade procedures and the monitoring signals your team should watch.
  • Your engineers are trained on tenant onboarding and offboarding so new customers can be added without changing the search design.

How we support

  • Ongoing support, upgrades and continuous security testing of the search tier are available as a retainer.
  • Upgrades to the engine are planned and tested in a staging copy of your tenant data before they reach production.
  • Your team confirms support hours, response expectations and escalation paths in the written scope before go-live.

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.