The intelligence
layer for your
existing database.
Search, similarity, dashboards, and smart feeds — bolted onto Postgres, Mongo, or whatever you’re already running. Your data stays where it is.
Four features,
one line each.
Point SemiLayer at a table, declare a lens, and these click on top of the rows you already have. No new database. No new source of truth. No new on-call rotation.
Semantic search,
one call.
Query by meaning, not keyword. Typed client, streaming results, zero infra to babysit.
await beam.products.search("summer dresses under $80")
More-like-this,
actually.
Similarity on the rows you already have. No embeddings, no babysitting an index.
await beam.products.similar(id)
Dashboards,
no BI tool.
Typed aggregations, drillable to rows, optionally live. Vector-aware. Embed anywhere.
await beam.products.analyze.byCategory()
Personal feeds,
no ranker.
Mix recency, engagement, and context like dials. No ML team required. Composable.
await beam.articles.feed("discover", { userId })
Query across
your databases.
Your users are in Postgres. Your orders are in Mongo. Your events are in ClickHouse. SemiLayer joins across sources in one typed call — something no vector DB or hosted search tool can do.
await beam.users.search({ query: "churn risk this week", include: { orders: true, events: { since: "7d" } }, })
Three steps. Nothing leaves
your database.
Most teams ship the first lens in an afternoon. The data plane never moves — we index, we don’t copy.
Point at your database.
Pick a bridge — Postgres, Mongo, SQLite, ClickHouse — and hand SemiLayer the connection string. Or run a Runner inside your VPC.
$ semilayer sources connect \ --name main-db \ --bridge @semilayer/bridge-postgres \ --url "postgresql://••••@db.you" ✓ connected · sl.config.ts updated ✓ ingest scheduled · ~2m
Declare a lens.
One TypeScript file describes which fields to index, which facets to expose (search · similar · feed), and the access rules. Pushed, validated, typed.
defineConfig({
lenses: {
products: {
source: 'main-db',
table: 'public.products',
grants: { search: 'public' },
},
},
})Call beam.* in your app.
Run semilayer generate and get a typed client. Import it, invoke it, ship it.
import { beam } from './beam.gen' const { results } = await beam.products.search({ query: 'summer dress under $80', limit: 12, }) // → SearchResult<Product>[]
The boring parts,
done well.
Procurement, infosec, and finance never have to feel surprised by SemiLayer. That’s the whole point.
Your data stays in your database.
We index, we don’t copy. Bring your own keys, your own retention.
Airgap-capable via Runners.
Outbound-only WebSocket. No VPN, no inbound ports, no surface to exploit.
Access rules & audit logs.
Row-level gating, full audit trail, SOC 2 Type II on track.
Pay for what you index.
Not per seat. Free tier is real, not a trial.
Self-host if you must.
Enterprise plan ships the whole control plane in your cloud.
What does this replace, exactly?
We’re honest about the alternatives. Here’s where SemiLayer is the right call — and where it isn’t.
Skip three months of pipelines.
Embeddings, vector infra, drift handling, eval — and the engineers you pulled off the roadmap to babysit them.
Your data never leaves your DB.
You own the schema, the index, the access rules. We don’t become a second source of truth.
One typed client. No glue.
No vector DB to babysit. No second source of truth to keep in sync. No pipeline that breaks at 3am.
Pay for what you index —
not per seat.
Free tier is real, not a trial. Everything else is usage-based. Enterprise self-host on request.
Hello, world.
- → All four primitives, every plan
- → Up to 3 projects · 3 teammates
- → Community support
Ship something real.
- → Production live-tail streaming
- → Webhook ingest · feeds · access rules
- → Up to 10 projects · 10 teammates
Power your actual product.
- → Everything in Pro
- → Custom transforms · multi-env
- → Up to 25 projects · 25 teammates
- → Priority email support
For when it matters.
- → Everything in Team
- → Higher rate limits
- → Unlimited projects & teammates
Ready to bolt on
intelligence?
Take it for a spin, ship in an afternoon, upgrade when it earns it. Free tier is real — no card, no trial clock.