{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"typesense","slug":"typesense","name":"Typesense","type":"repo","url":"https://github.com/typesense/typesense","page_url":"https://unfragile.ai/typesense","categories":["rag-knowledge"],"tags":[],"pricing":{"model":"free","free":true,"starting_price":null},"status":"active","verified":false},"capabilities":[{"id":"typesense__cap_0","uri":"capability://search.retrieval.typo.tolerant.full.text.search.with.adaptive.radix.tree.indexing","name":"typo-tolerant full-text search with adaptive radix tree indexing","description":"Implements fuzzy matching and typo tolerance using an Adaptive Radix Tree (ART) data structure that enables memory-efficient prefix and fuzzy matching across indexed text fields. The ART index is maintained in-memory for fast reads while persisted to RocksDB for durability, allowing sub-50ms query latency even with spelling variations. Queries automatically expand to include typo variants without requiring explicit configuration.","intents":["Build search-as-you-type interfaces that forgive user spelling mistakes","Index large text corpora and retrieve results despite typos in queries","Minimize latency for instant search experiences in production applications"],"best_for":["Product teams building consumer-facing search UIs","E-commerce platforms handling user misspellings","Content discovery applications prioritizing user experience"],"limitations":["Typo tolerance is applied uniformly across all text fields — no per-field configuration of fuzzy distance thresholds","ART tree memory overhead scales with vocabulary size; very large datasets (>100M unique terms) may require careful memory tuning","Fuzzy matching performance degrades with very short queries (1-2 characters) due to expansion cardinality"],"requires":["C++ runtime environment","RocksDB for persistence backend","Minimum 512MB RAM for typical datasets"],"input_types":["JSON documents with string fields","UTF-8 encoded text"],"output_types":["Ranked result sets with relevance scores","Matched document IDs with field highlights"],"categories":["search-retrieval","text-processing"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"typesense__cap_1","uri":"capability://search.retrieval.vector.similarity.search.with.semantic.embeddings","name":"vector similarity search with semantic embeddings","description":"Supports dense vector search by storing and indexing embedding vectors alongside document fields, enabling semantic similarity queries beyond keyword matching. Integrates with ONNX Runtime for optional on-device embedding generation, allowing documents and queries to be embedded without external API calls. Vector search results can be combined with keyword filters and facets in a single query.","intents":["Find semantically similar documents using embedding vectors from LLMs or specialized models","Build hybrid search combining keyword and semantic relevance","Implement RAG pipelines that retrieve contextually relevant documents for LLM prompts"],"best_for":["AI/ML teams building RAG systems and semantic search","Teams migrating from pure keyword search to neural retrieval","Applications requiring both exact-match and semantic relevance"],"limitations":["Vector indexing does not use approximate nearest neighbor (ANN) structures like HNSW — uses brute-force similarity computation, which scales O(n) with corpus size","Embedding generation via ONNX Runtime adds ~50-200ms per document at indexing time depending on model complexity","No built-in support for vector quantization or dimensionality reduction; full-precision vectors required"],"requires":["ONNX Runtime library (optional, for on-device embeddings)","Pre-computed embedding vectors (768-1536 dimensions typical)","API key for external embedding service if not using ONNX"],"input_types":["Dense float vectors (1D arrays)","JSON documents with vector fields","Text for on-device embedding via ONNX models"],"output_types":["Ranked results by cosine/dot-product similarity","Similarity scores (0-1 range)","Hybrid result sets combining vector and keyword relevance"],"categories":["search-retrieval","memory-knowledge"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"typesense__cap_10","uri":"capability://search.retrieval.geospatial.point.in.polygon.and.distance.based.filtering","name":"geospatial point-in-polygon and distance-based filtering","description":"Supports geopoint fields for storing latitude/longitude coordinates and enables distance-based filtering (e.g., find results within 10km of a location) and polygon-based filtering (e.g., find results within a geographic boundary). Geospatial queries are evaluated during search using spatial indexing, and results can be sorted by distance. Integrates with standard GeoJSON formats.","intents":["Filter search results by geographic proximity (e.g., nearby restaurants)","Find documents within geographic boundaries (e.g., city limits)","Sort results by distance from a reference location"],"best_for":["Location-based services and mapping applications","E-commerce platforms with store locators","Real estate and local business search applications"],"limitations":["Geospatial indexing uses simple distance calculations without advanced spatial indexes (R-tree, Quadtree) — performance degrades with very large geographic datasets","Polygon queries are evaluated using point-in-polygon algorithms without pre-computed spatial partitioning — can be slow for complex polygons","No support for geographic projections or coordinate systems other than WGS84 (latitude/longitude)","Distance calculations assume spherical Earth model — accuracy degrades near poles"],"requires":["Geopoint fields declared in schema (lat/lon pair)","GeoJSON format for polygon definitions","Latitude/longitude values in WGS84 coordinate system"],"input_types":["Geopoint coordinates (latitude, longitude)","GeoJSON polygons","Distance parameters (radius, unit)"],"output_types":["Filtered documents within geographic bounds","Distance values (in km or miles)","Sorted results by distance"],"categories":["search-retrieval","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"typesense__cap_11","uri":"capability://search.retrieval.document.sorting.and.ranking.by.multiple.fields","name":"document sorting and ranking by multiple fields","description":"Enables sorting search results by one or more fields (text, numeric, date) in ascending or descending order, with support for relevance-based ranking (BM25 or vector similarity scores). Sorting is applied after filtering and faceting, and results are paginated using offset/limit parameters. Multi-field sorting allows complex ranking strategies (e.g., sort by relevance, then by date, then by rating).","intents":["Sort search results by relevance, date, price, or custom numeric fields","Implement multi-level sorting for complex ranking strategies","Paginate large result sets efficiently"],"best_for":["E-commerce platforms with complex product ranking","Content discovery applications with multi-factor sorting","Search interfaces requiring user-configurable sort options"],"limitations":["Sorting is applied after filtering — sorting by non-indexed fields requires full result set computation","Multi-field sorting performance degrades with very large result sets (>100k documents) due to memory overhead","No support for custom scoring functions or machine learning-based ranking","Pagination using offset/limit is inefficient for deep pagination (offset >10k) — requires scanning all previous results"],"requires":["Fields marked as sortable in schema definition","Numeric or text fields for sorting","Relevance scores computed during search"],"input_types":["Sort field names and directions","Pagination parameters (offset, limit)","Relevance scoring parameters"],"output_types":["Sorted result sets","Pagination metadata (total count, page number)","Relevance scores per result"],"categories":["search-retrieval","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"typesense__cap_12","uri":"capability://data.processing.analysis.batch.document.indexing.and.bulk.operations","name":"batch document indexing and bulk operations","description":"Supports bulk indexing of multiple documents in a single API request, reducing HTTP overhead and improving throughput for large-scale data imports. Bulk operations are processed in batches and persisted to RocksDB atomically, ensuring consistency. Supports both insert and update operations in a single batch request.","intents":["Import large datasets into Typesense efficiently","Perform bulk updates to existing documents","Reduce HTTP request overhead for high-volume indexing"],"best_for":["Data migration and ETL pipelines","Initial dataset loading and re-indexing","High-throughput indexing scenarios"],"limitations":["Batch size is limited by available memory — very large batches (>100k documents) may cause out-of-memory errors","Bulk operations are not atomic across multiple batches — partial failures in one batch do not roll back previous batches","No built-in progress tracking or resumption — failed bulk operations must be retried manually","Batch indexing throughput is limited by RocksDB write performance (~10k-50k documents/second depending on hardware)"],"requires":["JSON array of documents conforming to schema","HTTP client supporting large request bodies","Sufficient server memory for batch processing"],"input_types":["JSON array of documents","Bulk operation metadata (insert/update flags)"],"output_types":["Bulk operation results (success/failure per document)","Error messages for failed documents","Indexing statistics (documents indexed, time elapsed)"],"categories":["data-processing-analysis","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"typesense__cap_13","uri":"capability://data.processing.analysis.real.time.analytics.and.event.tracking","name":"real-time analytics and event tracking","description":"Tracks search queries, user interactions, and system events through an Analytics component, enabling real-time insights into search behavior and system performance. Events are collected asynchronously and can be exported for analysis. Supports custom event tracking for application-specific metrics.","intents":["Monitor search query patterns and user behavior","Track system performance metrics (query latency, indexing throughput)","Analyze search effectiveness and identify optimization opportunities"],"best_for":["Product teams optimizing search relevance","Operations teams monitoring system health","Data-driven organizations analyzing user behavior"],"limitations":["Analytics collection is asynchronous — real-time dashboards may have 1-5 second lag","No built-in analytics dashboard — requires external tools (Grafana, Datadog) for visualization","Event storage is in-memory — analytics data is lost on server restart unless exported","No built-in data retention policies — analytics data grows unbounded without manual cleanup"],"requires":["Analytics component enabled in server configuration","External analytics backend (optional) for long-term storage","Monitoring tools for visualization and alerting"],"input_types":["Search queries and results","User interaction events","System performance metrics","Custom application events"],"output_types":["Query statistics (count, latency, top queries)","User behavior metrics (click-through rates, conversions)","System performance metrics (CPU, memory, disk usage)","Custom event data"],"categories":["data-processing-analysis","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"typesense__cap_2","uri":"capability://search.retrieval.multi.field.faceted.filtering.and.aggregation","name":"multi-field faceted filtering and aggregation","description":"Enables drill-down filtering across multiple document fields with automatic aggregation of result counts per facet value. Facets are computed during search by maintaining inverted indexes per field, allowing fast computation of value distributions without post-processing. Supports hierarchical faceting and numeric range facets alongside categorical facets.","intents":["Build faceted search interfaces (e.g., product filters in e-commerce)","Compute aggregated statistics across search results (e.g., price ranges, categories)","Enable progressive refinement of search results through filter selection"],"best_for":["E-commerce and marketplace platforms with complex filtering needs","Content discovery applications with multi-dimensional metadata","Analytics dashboards requiring real-time facet computation"],"limitations":["Facet computation is synchronous with search — very high cardinality facets (>100k unique values) can add 50-200ms to query latency","No built-in support for facet hierarchies or parent-child relationships; must be flattened into separate fields","Facet results are not paginated — all facet values returned in a single response, which can be large for high-cardinality fields"],"requires":["Fields explicitly marked as facetable in schema definition","Inverted index structures maintained per facet field","Sufficient memory for facet value bitmaps (scales with unique value count)"],"input_types":["Categorical field values (strings, enums)","Numeric ranges","JSON documents with facet-enabled fields"],"output_types":["Facet value counts (value → count pairs)","Numeric range distributions","Hierarchical facet trees (if flattened)"],"categories":["search-retrieval","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"typesense__cap_3","uri":"capability://data.processing.analysis.schema.based.json.document.indexing.with.field.level.configuration","name":"schema-based json document indexing with field-level configuration","description":"Enforces explicit schema definition for collections, where each field specifies type (string, int, float, bool, geopoint, object), indexing behavior (indexed, sortable, facetable), and optional parameters like tokenization strategy. Documents are validated against schema at index time, and fields are indexed according to their configuration using specialized index structures (ART for strings, NumericTrie for ranges, etc.). Schema changes require explicit migration.","intents":["Define structured search indexes with type safety and validation","Control which fields are searchable, sortable, and facetable without indexing overhead","Migrate data schemas with explicit versioning and validation"],"best_for":["Teams building production search systems requiring data integrity","Applications with well-defined data models and strict typing requirements","Organizations needing audit trails of schema changes"],"limitations":["Schema is immutable after collection creation — field additions/removals require explicit migration or collection recreation","No support for dynamic/schemaless indexing; all fields must be pre-declared","Field type changes are not supported; new field with different type requires data re-indexing"],"requires":["JSON schema definition with field types and indexing flags","Pre-knowledge of data structure before collection creation","API call to create collection with schema before indexing documents"],"input_types":["JSON schema definitions","JSON documents conforming to schema","Field configuration objects"],"output_types":["Validated document indexes","Schema metadata and field definitions","Validation error reports"],"categories":["data-processing-analysis","search-retrieval"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"typesense__cap_4","uri":"capability://search.retrieval.numeric.range.indexing.and.range.query.filtering","name":"numeric range indexing and range query filtering","description":"Implements NumericTrie data structure for efficient range queries on numeric fields (integers, floats), enabling fast filtering by numeric ranges without scanning all documents. Range queries are evaluated during search using trie traversal, and results can be combined with text search and faceting. Supports both inclusive and exclusive range boundaries.","intents":["Filter search results by numeric ranges (e.g., price, date, rating)","Combine range filters with full-text search in a single query","Compute numeric range facets with automatic bucketing"],"best_for":["E-commerce platforms filtering by price ranges","Time-series data applications filtering by date ranges","Analytics platforms with numeric dimension filtering"],"limitations":["NumericTrie is optimized for range queries but not for exact-match numeric searches — exact matches still require full trie traversal","Range query performance degrades with very large numeric ranges (e.g., 0-2^63); no histogram-based optimization","Floating-point precision issues may arise with very small numeric ranges or high-precision decimals"],"requires":["Numeric fields (int, float, double) declared in schema","NumericTrie index structure maintained per numeric field","Sufficient memory for trie nodes (scales with value cardinality)"],"input_types":["Integer and floating-point values","Range query parameters (min, max, inclusive/exclusive flags)","JSON documents with numeric fields"],"output_types":["Filtered document sets matching range criteria","Range facet distributions","Numeric range aggregations"],"categories":["search-retrieval","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"typesense__cap_5","uri":"capability://tool.use.integration.restful.http.api.with.json.request.response.serialization","name":"restful http api with json request/response serialization","description":"Exposes all search, indexing, and management operations through a clean RESTful API built on H2O HTTP server, accepting JSON payloads and returning JSON responses. API endpoints follow REST conventions (GET for retrieval, POST for creation, PUT for updates, DELETE for removal) and support query parameters for filtering, pagination, and sorting. Authentication is enforced via API keys managed by AuthManager.","intents":["Integrate Typesense into web applications and microservices via HTTP","Build client libraries and SDKs for various programming languages","Query Typesense from browsers, mobile apps, and backend services"],"best_for":["Web and mobile application developers integrating search","Teams building polyglot systems with language-agnostic APIs","Organizations requiring HTTP-based search without client libraries"],"limitations":["HTTP overhead adds ~5-10ms latency per request compared to direct library calls; not suitable for ultra-low-latency applications","JSON serialization/deserialization adds ~1-5ms per request depending on payload size","No built-in request batching — multiple searches require multiple HTTP requests"],"requires":["H2O HTTP server library","Network connectivity to Typesense server","Valid API key for authentication","HTTP client library in application language"],"input_types":["JSON request bodies","URL query parameters","HTTP headers (Authorization)"],"output_types":["JSON response bodies","HTTP status codes","JSON error messages with error codes"],"categories":["tool-use-integration","search-retrieval"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"typesense__cap_6","uri":"capability://safety.moderation.api.key.based.authentication.and.authorization","name":"api key-based authentication and authorization","description":"Manages API key generation, validation, and scoping through AuthManager component. Each API key can be scoped to specific collections and operations (search, index, delete), enforced at request time before query execution. Keys are validated on every HTTP request via Authorization header, and invalid/expired keys are rejected with 401 responses.","intents":["Secure Typesense instances with API key authentication","Restrict client access to specific collections or operations","Rotate and revoke API keys without restarting the server"],"best_for":["Production deployments requiring multi-tenant isolation","Teams with different permission levels (read-only vs write access)","Applications exposing search to untrusted clients"],"limitations":["API keys are transmitted in HTTP headers — requires HTTPS in production to prevent interception","No built-in key rotation or expiration — keys are valid indefinitely until manually revoked","Scoping is coarse-grained (collection-level) — no row-level or field-level access control","No audit logging of API key usage — cannot track which key performed which operations"],"requires":["API key generation via admin API","HTTPS/TLS for secure key transmission","AuthManager component in server initialization"],"input_types":["API key strings","Authorization header values","Key scope definitions (collections, operations)"],"output_types":["Authentication success/failure responses","401 Unauthorized errors","API key metadata (creation date, scopes)"],"categories":["safety-moderation","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"typesense__cap_7","uri":"capability://data.processing.analysis.in.memory.indexing.with.rocksdb.persistence.layer","name":"in-memory indexing with rocksdb persistence layer","description":"Maintains primary index structures (ART trees, NumericTries, inverted indexes) in memory for fast query execution, while persisting all data to RocksDB key-value store for durability and recovery. The Store abstraction layer handles all persistence operations, decoupling in-memory indexes from disk storage. On server restart, indexes are reconstructed from RocksDB snapshots.","intents":["Achieve sub-50ms query latency with in-memory indexes","Ensure data durability and recovery from crashes","Scale to datasets larger than available RAM by leveraging disk storage"],"best_for":["Production systems requiring both speed and durability","Applications with datasets up to 100GB+ (with careful memory tuning)","Teams wanting single-binary deployment without external databases"],"limitations":["Memory usage scales with index size — very large datasets (>500GB) may require distributed deployment","RocksDB persistence adds ~5-20ms latency to write operations (index, update, delete)","Index reconstruction on server restart can take minutes for very large datasets (>100M documents)","No built-in compression — RocksDB storage footprint is ~60-80% of in-memory index size"],"requires":["RocksDB library compiled and linked","Sufficient RAM for primary index structures (typically 50-70% of dataset size)","Persistent storage (SSD recommended) for RocksDB files","Jemalloc memory allocator (included in build) for efficient memory management"],"input_types":["JSON documents","Index operations (add, update, delete)","RocksDB snapshots"],"output_types":["Persisted document data","RocksDB key-value pairs","Recovery snapshots"],"categories":["data-processing-analysis","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"typesense__cap_8","uri":"capability://automation.workflow.distributed.consensus.and.replication.via.raft.protocol","name":"distributed consensus and replication via raft protocol","description":"Implements optional Raft consensus for high-availability deployments, allowing multiple Typesense nodes to replicate data and elect a leader. Write operations are committed to the Raft log before being applied to local indexes, ensuring consistency across replicas. Read operations can be served from any replica, enabling load distribution. Raft handles leader election and automatic failover.","intents":["Deploy Typesense in high-availability clusters with automatic failover","Replicate search indexes across multiple nodes for redundancy","Distribute read load across replica nodes"],"best_for":["Production systems requiring 99.9%+ uptime","Teams with multiple data centers or availability zones","Applications where search index loss is unacceptable"],"limitations":["Raft consensus adds ~50-100ms latency to write operations due to log replication and quorum commits","Network partitions can cause temporary unavailability if quorum is lost","Raft implementation is single-threaded — does not parallelize across multiple cores for consensus operations","No built-in support for cross-region replication — requires low-latency network between nodes"],"requires":["Multiple Typesense nodes (minimum 3 for fault tolerance)","Low-latency network connectivity between nodes (<10ms recommended)","Raft configuration with node addresses and ports","Persistent storage for Raft logs (RocksDB)"],"input_types":["Write operations (index, update, delete)","Raft log entries","Node configuration"],"output_types":["Replicated indexes across nodes","Raft consensus state","Leader election results"],"categories":["automation-workflow","safety-moderation"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"typesense__cap_9","uri":"capability://memory.knowledge.conversational.search.and.rag.integration","name":"conversational search and rag integration","description":"Supports conversational search workflows where user queries are processed through LLM-based intent understanding, and retrieved documents are fed back to LLMs for answer generation. Integrates with external LLM APIs (OpenAI, Anthropic) for query expansion and answer synthesis. Retrieved documents are ranked by relevance and passed to LLMs with context windows, enabling RAG (Retrieval-Augmented Generation) pipelines.","intents":["Build conversational search interfaces that understand natural language intent","Implement RAG pipelines that ground LLM responses in retrieved documents","Generate contextual answers by combining search results with LLM reasoning"],"best_for":["AI/ML teams building conversational AI and chatbot systems","Organizations implementing RAG for domain-specific question answering","Applications requiring grounded, factual responses from LLMs"],"limitations":["Conversational search requires external LLM API calls, adding 500ms-2s latency per query","No built-in prompt engineering or few-shot example management — requires manual prompt tuning","Retrieved documents are passed to LLMs as-is without automatic summarization — large result sets may exceed context windows","No built-in evaluation metrics for answer quality — requires external evaluation framework"],"requires":["API key for external LLM service (OpenAI, Anthropic, etc.)","Network connectivity to LLM APIs","Pre-indexed documents with semantic embeddings","Prompt templates for query expansion and answer generation"],"input_types":["Natural language user queries","Conversational context (previous messages)","Retrieved documents from search","LLM API responses"],"output_types":["LLM-generated answers","Retrieved document references","Conversational context for follow-up queries"],"categories":["memory-knowledge","planning-reasoning"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"typesense__headline","uri":"capability://search.retrieval.open.source.instant.search.engine","name":"open-source instant search engine","description":"Typesense is an open-source search engine optimized for instant search-as-you-type experiences, featuring built-in vector search, typo tolerance, and a developer-friendly API, making it ideal for creating seamless search functionalities in applications.","intents":["best open-source search engine","instant search engine for web applications","typo-tolerant search solution","vector search engine for developers","fast search engine alternatives to Algolia"],"best_for":["developers looking for fast search solutions","projects requiring typo tolerance"],"limitations":[],"requires":[],"input_types":[],"output_types":[],"categories":["search-retrieval"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":55,"verified":false,"data_access_risk":"high","permissions":["C++ runtime environment","RocksDB for persistence backend","Minimum 512MB RAM for typical datasets","ONNX Runtime library (optional, for on-device embeddings)","Pre-computed embedding vectors (768-1536 dimensions typical)","API key for external embedding service if not using ONNX","Geopoint fields declared in schema (lat/lon pair)","GeoJSON format for polygon definitions","Latitude/longitude values in WGS84 coordinate system","Fields marked as sortable in schema definition"],"failure_modes":["Typo tolerance is applied uniformly across all text fields — no per-field configuration of fuzzy distance thresholds","ART tree memory overhead scales with vocabulary size; very large datasets (>100M unique terms) may require careful memory tuning","Fuzzy matching performance degrades with very short queries (1-2 characters) due to expansion cardinality","Vector indexing does not use approximate nearest neighbor (ANN) structures like HNSW — uses brute-force similarity computation, which scales O(n) with corpus size","Embedding generation via ONNX Runtime adds ~50-200ms per document at indexing time depending on model complexity","No built-in support for vector quantization or dimensionality reduction; full-precision vectors required","Geospatial indexing uses simple distance calculations without advanced spatial indexes (R-tree, Quadtree) — performance degrades with very large geographic datasets","Polygon queries are evaluated using point-in-polygon algorithms without pre-computed spatial partitioning — can be slow for complex polygons","No support for geographic projections or coordinate systems other than WGS84 (latitude/longitude)","Distance calculations assume spherical Earth model — accuracy degrades near poles","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.7,"quality":0.9,"ecosystem":0.39999999999999997,"match_graph":0.25,"freshness":0.52,"weights":{"adoption":0.3,"quality":0.2,"ecosystem":0.15,"match_graph":0.3,"freshness":0.05}},"observed_outcomes":{"matches":0,"success_rate":0,"avg_confidence":0,"top_intents":[],"last_matched_at":null},"maintenance":{"status":"active","updated_at":"2026-06-17T09:51:05.297Z","last_scraped_at":null,"last_commit":null},"community":{"stars":null,"forks":null,"weekly_downloads":null,"model_downloads":null,"model_likes":null}},"distribution":{"claim_url":"https://unfragile.ai/submit?claim=typesense","compare_url":"https://unfragile.ai/compare?artifact=typesense"}},"signature":"E+EbkouOiAGJ6X+e/Hiea6W8PeSYyNoMfe/8dkeODJle90R++bWjHJRZrarBIx/ztGCB1phE06Ul9pvMrl/aAQ==","signedAt":"2026-06-20T21:11:48.230Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/typesense","artifact":"https://unfragile.ai/typesense","verify":"https://unfragile.ai/api/v1/verify?slug=typesense","publicKey":"https://unfragile.ai/api/v1/trust-passport-public-key","spec":"https://unfragile.ai/trust","schema":"https://unfragile.ai/schema.json","docs":"https://unfragile.ai/docs"}}