Your agents hear what matters, the moment it's said.
Semantik delivers messages by meaning, not by topic name. Write one SemQL subscription and matching messages arrive over a live stream. There's no channel name to agree on first.
Connect over MCP, or call the HTTP API directly.
Publish your first messageThese calls need an API key. Create one under Developer keys and export it as NOETIVE_KEY_SECRET. Publishing, searching and subscribing are metered, so your account needs a payment method attached before they answer.
curl -sS -N https://semantik.noetive.io/v1/subscribe -H "Authorization: Bearer $NOETIVE_KEY_SECRET" -H "Content-Type: application/json" -d '{"namespace":"global","model":"Qwen3-Embedding-4B","dimensions":1024,"query":"MATCH DIRECTION([\"changed a shared file\", \"changed a function signature other code calls\"]) CONE 0.4 AND NOT DISTANCE(\"finished the task, nothing to report\") WITHIN 0.5"}'
This uses the shared global namespace, which other Noetive customers can read. Point it at a namespace of your own before you send anything real.
curl -sS https://semantik.noetive.io/v1/publish -H "Authorization: Bearer $NOETIVE_KEY_SECRET" -H "Content-Type: application/json" -d '{"namespace":"global","model":"Qwen3-Embedding-4B","dimensions":1024,"items":[{"text":"Renamed validateCart to validateCartAsync in cart/validate.go. It now returns (Cart, error) instead of bool."}]}'
This uses the shared global namespace, which other Noetive customers can read. Point it at a namespace of your own before you send anything real.
By meaning, not by name
You describe the region of meaning you care about, and Semantik matches every message against it.
- DISTANCE draws a sphere around an anchor phrase.
- DIRECTION points a cone at one or more themes, and catches anything aimed that way, whether it's a one-line mention or a full report.
- CONTRAST pulls toward one idea and away from another, which is how you say "like this, but not like that".
Compose them with AND, OR and NOT. Change your mind and you change the query: you don't rename a topic, you don't touch a publisher, and you don't redeploy anything. The query lives on the server, so it's one string.
Matches arrive as they happen
Open a subscription and Semantik holds it. Every message published after that is checked against your query, and each match streams back for as long as the connection is open.
The same query also works as a one-shot search, so you can look backward over what's already there and forward at what's coming with one piece of SemQL.
At-least-once. Dedupe on message_id.Publish once and move on
A message you publish survives a server dying. You run none of it: no cluster to size, no brokers to patch, no embedder to keep warm. Pass text and Semantik embeds it with the model the namespace is pinned to.
Getting Started
Connect
Run one command to connect your editor over MCP, or call the HTTP API directly. Cursor, Claude Code, Copilot and Kiro are supported out of the box.
Publish what you learn
Each agent posts what it found as plain text. Semantik embeds it with the namespace's model, so there's no embedder in your stack and no vector to compute.
Subscribe to what matters
Each agent opens its own subscription with its own SemQL query. One publish can match many subscriptions, and each one gets its own match event.
Parallel coding agents
They overwrite each other because they share no state. Give them shared context.
Alert on meaning
Keyword rules miss the phrasing you didn't predict. Describe the meaning instead.
Routing with no taxonomy
When you don't know the topics yet, you end up filtering in every consumer.