Managed AI infrastructure
We run the AI stack. You focus on customers.
Documents, search and servers are Schift's job.
import { DataClient } from "@schift-io/sdk";
const apiKey = process.env.SCHIFT_API_KEY!;
const data = new DataClient({ apiKey });
// Append: rows are queryable as they land, then compacted into Parquet
await data.put("custom/app-events", [
{ user_id: "u_42", event: "checkout", latency_ms: 184 },
]);
// Read: filter and range conditions, right away
const rows = await data.search("custom/app-events", {
where: { event: "checkout", latency_ms: { gte: 150 } },
});import { VectorClient } from "@schift-io/sdk";
const apiKey = process.env.SCHIFT_API_KEY!;
const vectors = new VectorClient({ apiKey });
const model = "your-embedding-model"; // embedding: number[] from that model
// Upsert: each vector space checks its dimension and model
await vectors.upsert("custom/support-docs", [
{ id: "refund-policy", text: "Refunds within 14 days", vectors: { text: embedding } },
], { models: { text: model } });
// Search: nearest records with scores
const { hits } = await vectors.search("custom/support-docs", {
queryVector: queryEmbedding,
topK: 5,
});import { readFile } from "node:fs/promises";
import { StructifyClient } from "@schift-io/sdk/structify";
const docs = new StructifyClient({ gatewayUrl: "https://gw.schift.io" });
// Send a PDF and a schema
const result = await docs.structify({
file: await readFile("invoice.pdf"),
schema: {
type: "object",
properties: { vendor: { type: "string" }, total: { type: "number" } },
},
});
// Every field returns a value, a confidence and its source blockimport { ObserverClient } from "@schift-io/context";
const observer = new ObserverClient(); // SCHIFT_OBSERVER_API_KEY
const run = observer.startRun({
agentId: "support-agent", sessionId, model: "gpt-4.1-mini", provider: "openai",
});
// Record the context your agent picked and each model turn
run.recordSelection(true, { srn: "srn:document:refund-policy" });
run.record("model_turn", { tokenUsage: 2210, latencyMs: 930 });
// The session timeline lands in the console
run.endRun({ status: "completed" });
await observer.close();You build the product. Schift runs what's underneath.
Schift looks after the rest.
What you build
- The screens your customers use
- Product logic and prompts
- Customer feedback and the next feature
What Schift runs
- Reading documents and splitting them well
- Embeddings and search indexes
- Tidying and keeping your logs
- Storing agent records
- Scaling servers and backups
- Billing only what you use
Attach only the layers you need
Use each product on its own. Pay for what you use.
OCR / Structify
Documents to JSON
The JSON you want, with evidence per field.
DetailsWarehouse Logs
A log and Parquet hub
Queryable on arrival, kept as Parquet.
DetailsVectors
Vector DB and search
Upsert and search, filters included.
DetailsContext Management
What your agent saw
See what your agent looked at.
Details
Measured
Setup and date are on each page.
49.6 ms
Vectors search p50, 170k records
2026-09-24 UTC, one laptop with local MinIO788 = 788
Context Management tokens = provider-reported tokens
2026-09-22, real LangGraph and OpenRouter calls
Agree on scope, then pay per product
See per-product pricing01 Demo
Review your use case and available scope
02 Pay as you go
Billed per product used
03 Monthly commit
Commit for a lower rate
See how Schift fits your product
Tell us about your data and use case to arrange a demo and discuss access.
Frequently asked questions
How can I try Schift?
Request a demo to review your use case and available scope. Product allowances and usage rates apply once access is arranged.
How does billing work?
Each product is metered on its own and you pay for what you use. Once usage settles, commit monthly per product for a lower rate; overage continues at the same rate.
Where do I see my costs?
The usage API returns usage per product and per meter. Multiply by the rates on the pricing page and you get the invoice amount.
What infrastructure do I need?
One API key. Schift runs the servers, storage, scaling, backups and usage metering.
Which languages are supported?
TypeScript uses @schift-io/sdk on npm and Python uses the schift package on PyPI. The same features are available through the REST API.
What format does my data live in?
Warehouse Logs compacts rows into Parquet, and you read them back any time with filters and aggregates through the same API.
Can I see what my agent based an answer on?
Add the Observe SDK to your agent loop and context candidates, selections, exclusions, model turns and tool results land on a session timeline.