Skip to main content

Oberik

Oberik is the AI layer you put inside your product. Your customers ask questions about their own data and get grounded answers with citations; the agent can also do the work — run code, transform files, hand results back.

You call it from your backend and from your frontend. Oberik handles retrieval, tool calling, sandboxed compute, scheduling, isolation and cost attribution.

import { createClient } from "@oberik/sdk";

// Your backend mints short-lived tokens; the SDK asks for a new one when the
// current one expires, so expiry never surfaces at a call site.
const ai = createClient({ getToken });

const res = await ai.chat.send({
message: "How did Q3 revenue trend, and why?",
tags: ["finance"],
});

res.content; // grounded answer
res.citations; // document · page · quote

The model in one minute

ConceptWhat it is
ProjectOne isolated workspace. Its documents, embeddings, files, sandboxes, credentials and spend are separate from every other project's. Most integrations use one project per customer, or one per environment.
TokenA short-lived JWT your backend mints for one end-user, carrying exactly the capabilities you grant. Your frontend never holds anything privileged.
CapabilityA permission (chat, documents:read, computer…). A token can only hold what the project allows, and the API refuses anything outside it — including a tool the model decides to call.
ScopeA hierarchical path (acme:finance:user_9f3c) bounding which data a token can see, so one customer's users don't read each other's documents.

Where things live

Two hosts, two credentials. Nothing else to configure.

URLCredentialWhat it's for
Control planehttps://oberik.comX-API-Key: pk_…administering a project: minting end-user tokens, setting the capability ceiling, curating the corpus. Server-side only.
Data planehttps://api.oberik.comAuthorization: Bearer <jwt>the AI itself: chat, documents, tools, sandboxes. This is what the SDK talks to.
Dashboardhttps://oberik.com/appyour loginthe same control plane with a UI on it.
SSHssh ssh.oberik.comyour account, or an SSH keythe same control plane as text — for terminals and coding agents.
npm install @oberik/sdk

The SDK defaults to the hosted data plane, so baseUrl is only needed for a self-hosted deployment. Self-hosting? Every URL above becomes yours; nothing else in these docs changes.

What you can turn on

Each of these is a capability you grant a project and then, per end-user, a token — and can still decline on any single request.

How do I…

get one cited answerQuickstart
do all of this from a terminal, or from a coding agentOberik over SSH
mint a token for a signed-in userAuthentication
set up a project from a script instead of the dashboardProject API
upload a corpus my users can only readDocuments
let the model call my application's functionsTools
…including in a scheduled run, with no client attachedWebhook tools
stream tokens into a UIChat
call the API from a browserBrowser origins
let the agent run codeSandboxed compute
stop it before it does something irreversibleAsking permission
run something every MondayScheduling
know what went wrongLimits & errors
find the exact endpointAPI reference · Recipes

Start here

  1. Quickstart — a cited answer in about five minutes.
  2. Authentication — how to mint tokens, and why it belongs on your server.
  3. Calling from the browser — required before your frontend calls us directly.
Working from a terminal, or building with an agent?

Everything here is also a shell: ssh ssh.oberik.com signs up, creates projects, mints tokens and talks to the agent, with no browser and no client to install. A coding agent can sign in without ever handling your password, and read these docs in place with docs, docs page <name> and docs search <term>. See Oberik over SSH.

This site is also published as llms.txt (an index) and llms-full.txt (every page, one file), and the data plane serves its own OpenAPI schema at api.oberik.com/openapi.json.