Search docs…⌘K
v0.10.0 · MIT

Feather Core is open source. Star us and ship fast.

View on GitHub →
Home/Docs/What's new in v0.10
Release · v0.10.0 · 2026-05-12

Feather DB Cloud Edition.

v0.10 replaces the legacy Gradio dashboard with a brand-aligned admin SPA and adds the connective tissue needed to run Feather as a managed context engine — pluggable embeddings, in-memory observability, and 20+ new REST endpoints.

At a glance

Atlas Admin SPA
/admin/
Replaces Gradio. 7 tabs per namespace, command palette.
Embedding Providers
6 built-in
OpenAI · Azure · Gemini · Voyage · Cohere · Ollama.
Observability
p50/p95/p99
Ring buffer · ops timeseries · activity feed.

Added — Atlas-style admin SPA

feather-api/static/admin/

New single-page admin UI mounted at /admin/ (HTML + Tailwind via CDN + Alpine.js + D3, ~2k LOC, zero build step). Served by FastAPI with Cache-Control: no-cache so each deploy is picked up without manual refresh.

  • ·Overview screen — 4 record-count tiles + 4 ops/latency tiles + ops-per-minute sparkline + recent-activity feed.
  • ·Namespaces list with create-namespace modal.
  • ·Namespace detail with 7 tabs: Records · Search · Schema · Hierarchy · Graph · Context · Console.
  • ·Record drawer with Metadata + Edges tabs, add-edge form, edit-record form.
  • ·Marketing profile card — when a record has brand, channel, campaign, ctr, roas attributes, render as a KPI card.
  • ·Cmd-K command palette — fuzzy search namespaces, jump to record by id, trigger actions.
  • ·Settings — connection info (cURL / Python / JS snippets), embedding service config, API key management.

Brand-aligned per the Feather DB brand book: paper #fcfaf7 surfaces, Geist + Geist Mono + Playfair Display italic type, lime as gesture only, ink-black primary CTAs. Removed the Gradio dashboard (~1300 LOC).

Added — pluggable embedding service

feather-api/app/embedding.py

Six providers ship out of the box with curated model dropdowns. Stored in-memory; API key never echoed back. Pad/truncate to namespace dim is automatic if a different-dim model is configured.

OpenAI
text-embedding-3-small / -large · ada-002
Azure OpenAI
endpoint + deployment + api_version
Google AI · Gemini
gemini-embedding-001 (current)
Voyage
voyage-3 · -lite · -large-2 · -code-2
Cohere
embed-english-v3 · multilingual · light
Ollama
nomic-embed-text · mxbai-embed-large · all-minilm
# configure via REST
PUT /v1/admin/embedding_config
{
  "provider": "openai",
  "model":    "text-embedding-3-small",
  "api_key":  "sk-..."
}

# then one-call embed + store
POST /v1/{ns}/ingest_text
{ "text": "...", "metadata": { "namespace_id": "acme" } }

Added — in-memory observability

feather-api/app/metrics.py

Ring-buffer for HTTP ops (default 2000 events). Snapshot endpoint exposes p50 / p95 / p99 latency and bucketed time-series for sparkline rendering. HTTP middleware records every /v1/* request — no external dependency.

GET /v1/admin/overview         # cluster stats
GET /v1/admin/metrics          # p50 / p95 / p99 + ops counts
GET /v1/admin/activity         # recent ops feed
GET /v1/admin/ops_timeseries   # buckets for sparkline
GET /v1/admin/connection_info  # copy-paste cURL / Python / JS

Added — REST endpoints

20+ new REST endpoints

Full surface for the managed context engine — namespaces CRUD, server-side embed, bulk import, discovery, maintenance.

POST   /v1/namespaces                       create
DELETE /v1/namespaces/{ns}                  hard-delete

GET    /v1/{ns}/schema                      distinct attribute keys + samples
GET    /v1/{ns}/hierarchy                   Brand → Channel → Campaign tree
GET    /v1/{ns}/top_recalled                recall_count desc
GET    /v1/{ns}/graph                       D3-shaped nodes + links
POST   /v1/{ns}/context_chain               vector search + BFS expansion

POST   /v1/{ns}/purge                       bulk hard-delete by namespace_id
POST   /v1/{ns}/compact                     rebuild HNSW (drops soft-deleted)
POST   /v1/{ns}/seed                        bulk-insert N random records
POST   /v1/{ns}/import                      bulk import inline records
POST   /v1/{ns}/ingest_text                 embed + store via provider

GET    /v1/{ns}/records/{id}/edges          outgoing + incoming edges

Bug fixes

Delete persistence (C++ save_vectors)

forget() and purge() now properly skip records in the persisted file. Previously, forgotten vectors resurrected on save+reload as orphans. Fixes a 6-month-old data-correctness bug.

Big-int id precision

Dashboard preserves >2^53 record ids as strings through JSON parse so view / delete works on huge ids. Seeded ids capped at 2^53 - 1 going forward.

Gemini default model

Switched to gemini-embedding-001 — Google deprecated text-embedding-004.

Removed

Legacy Gradio dashboard

  • · feather-api/dashboard.py
  • · feather-api/Dockerfile.dashboard
  • · feather-dashboard service from docker-compose.yml

Where to go next

Try the Cloud Edition in 5 minutes

Spin up the Docker image and open http://localhost:8000/admin/.

git clone https://github.com/feather-store/feather.git
cd feather

docker compose -f feather-api/docker-compose.yml build

FEATHER_API_KEY="feather-$(openssl rand -hex 16)" \
  docker compose -f feather-api/docker-compose.yml up -d