v1.0 · public release

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.

Free to start · no credit cardSOC 2 trackOSS bridges
app.tsx — beam.products.search()204 ms
awaitbeam.products.search("")
Bolt on what you need

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.

F · 02similar

More-like-this,
actually.

Similarity on the rows you already have. No embeddings, no babysitting an index.

await beam.products.similar(id)
F · 03analyze

Dashboards,
no BI tool.

Typed aggregations, drillable to rows, optionally live. Vector-aware. Embed anywhere.

await beam.products.analyze.byCategory()
F · 04feed

Personal feeds,
no ranker.

Mix recency, engagement, and context like dials. No ML team required. Composable.

01Soft launch retros0.92
02Index-time drift0.87
03Notes on lenses0.81
await beam.articles.feed("discover", { userId })
And one more thing

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.

one callbeam.users.search() fans out · awaits in parallel
pg postgres
users · accounts
132 ms
mg mongo
orders · line_items
184 ms
ch clickhouse
events · pageviews
97 ms
parallel · O(max), not O(sum)three sources, one round-trip
await beam.users.search({
 query: "churn risk this week",
 include: { orders: true, events: { since: "7d" } },
})
How it bolts on

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.

01POINT

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
02DECLARE

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' },
    },
 },
})
03CALL

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>[]
For buyers' ops teams

The boring parts,
done well.

Procurement, infosec, and finance never have to feel surprised by SemiLayer. That’s the whole point.

B · 01

Your data stays in your database.

We index, we don’t copy. Bring your own keys, your own retention.

B · 02

Airgap-capable via Runners.

Outbound-only WebSocket. No VPN, no inbound ports, no surface to exploit.

B · 03

Access rules & audit logs.

Row-level gating, full audit trail, SOC 2 Type II on track.

B · 04

Open-source bridges.

Swap databases without a migration. Lock-in is a feature flag.

B · 05

Pay for what you index.

Not per seat. Free tier is real, not a trial.

B · 06

Self-host if you must.

Enterprise plan ships the whole control plane in your cloud.

Why SemiLayer

What does this replace, exactly?

We’re honest about the alternatives. Here’s where SemiLayer is the right call — and where it isn’t.

vs. building yourself

Skip three months of pipelines.

Embeddings, vector infra, drift handling, eval — and the engineers you pulled off the roadmap to babysit them.

vs. Algolia

Your data never leaves your DB.

You own the schema, the index, the access rules. We don’t become a second source of truth.

vs. Pinecone + glue

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.

Pricing

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.

Free$0

Hello, world.

$0/ mo
10K rows · 10K queries / mo
  • All four primitives, every plan
  • Up to 3 projects · 3 teammates
  • Community support
Start free →
Team$199

Power your actual product.

$199/ mo
5M rows · 500K queries / mo
  • Everything in Pro
  • Custom transforms · multi-env
  • Up to 25 projects · 25 teammates
  • Priority email support
Start Team →
Scale$499

For when it matters.

$499/ mo
25M rows · unlimited queries
  • Everything in Team
  • Higher rate limits
  • Unlimited projects & teammates
Start Scale →
!Every plan, Free included, gets a 7-day, 10% grace window when you hit a limit. Reads stay live, ingest just shifts to a slower lane. We won’t shut your app down or surprise you with a bill.
One afternoon

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.