Models, knowledge, memory, tools, and tracing — connected through one typed contract. Composable packages, no platform lock-in, built for TypeScript teams that want to own the stack.

Models you already use

OpenAIAnthropicGeminiMistralGrok

More runtime.
Fewer rewrites.

Get models, memory, tools, and tracing through one typed contract. Swap adapters whenever you need.

Swappable models

Change providers without rebuilding the agent around them.

State that stays yours

Keep sessions and durable memory in the database you already operate.

One typed runtime

Run every agent through one predictable TypeScript contract.

Instrumented runs

Follow observed model calls, tools, and failures across the entire execution.

Modular packages

Install only the adapters you need. No platform lock-in.

Operate in production

Studio for local inspection. Lens for self-hosted observability and evaluation.

Every run ends in
a state you can handle.

Start with generate() or stream(). Complete, block, or suspend at a real application boundary—then resume in a linked phase, even from another process.

  1. 01

    Generate

    One typed input starts a bounded model-and-tool loop.

  2. 02

    Tool requested

    Arguments are validated before the protected action can run.

  3. 03

    Suspended

    An interaction and JSON-safe continuation return to your application.

  4. 04

    Resume

    Your server claims the response and starts a linked phase.

  5. 05

    Completed

    The approved tool runs and one typed result closes the lifecycle.

refund-tool.ts
1const issueRefund = createTool({2  name: 'issue_refund',3  inputSchema: refundInput,4  outputSchema: refundResult,5  requiresApproval: ({ amount }) =>6    amount > 1007      ? { reason: 'High-value refund.' }8      : false,9  async execute(input) {10    await auth.require(actor, input)11    return billing.refund(input)12  },13})
Refund order A-100Success
  1. agent Support Concierge10.48s7,230 tok
    1. generation gpt-5.6-sol1.04s642 tokplan
      1. tool get_customer_context412msparallel
      2. tool get_order386msparallel
      3. tool search_refund_policy528msparallel
    2. generation gpt-5.6-sol1.52s1,206 tokassess
      1. tool validate_refund_policy96ms
    3. generation gpt-5.6-sol1.18s918 tokdelegate
      1. subagent Refund Risk Analyst2.63s
        1. generation gpt-5.6-sol820ms516 tokanalyze
        2. tool get_refund_history371ms
        3. tool inspect_payment_signals438ms
        4. generation gpt-5.6-sol1.16s784 tokscore
      2. subagent Customer Resolution Planner2.42s
        1. generation gpt-5.6-sol910ms588 tokplan
        2. tool get_service_entitlements192ms
        3. generation gpt-5.6-sol1.10s746 tokresolve
    4. generation gpt-5.6-sol860ms798 tokmerge
    5. tool issue_refund612msapproved
    6. generation gpt-5.6-sol1.24s1,032 tokreply

Policy at the boundary

Validate input, require approval, and authorize the side effect in your code.

One result contract

Generate and stream finish as completed, blocked, or suspended.

Linked across processes

Every resumed phase keeps its relationship to the original run.

Explore the runtime lifecycle

Install two packages.
Ship one agent.

Start with the core runtime and one provider adapter. Add retrieval, memory, UI, and observability when the product needs them.

Read the quickstart
agent.ts
1import { Agent } from '@anvia/core'2import { OpenAIClient } from '@anvia/openai'34const client = new OpenAIClient({ apiKey: process.env.OPENAI_API_KEY! })5const model = client.completionModel({6  modelId: 'gpt-5.6-sol',7  api: 'responses',8})910const agent = new Agent({11  id: 'support',12  model,13  instructions: 'Answer support questions clearly.',14  maxTurns: 4,15})1617const response = await agent.generate({18  prompt: 'Draft a reply.',19})

Your infrastructure
stays yours.

Anvia coordinates the bounded model-and-tool loop. Your application keeps authority over users, credentials, data, permissions, persistence, and deployment.

01 / APPLICATION

Your application

Identity, policy, credentials, tools, and product UI remain explicit application concerns.

COMPOSE + AUTHORIZE
02 / RUNTIME

Anvia Core

Retrieve, generate, act, and observe through one bounded execution contract.

completedblockedsuspended

Provider models

OpenAI, Anthropic, Gemini, Mistral, Grok

Data and memory

Your stores, schemas, retention, and lifecycle

Observe and evaluate

Studio locally. Lens in your infrastructure.

Start with core.
Add what you need.

Every integration is an @anvia package. No platform lock-in and no all-or-nothing framework.

SDK

Models, knowledge, memory, tools, and tracing through one typed contract.

Open
Studio

Run, inspect, and intervene on local agents without leaving the browser.

Open
Lens

Self-hosted observability and evaluation for production agent runs.

Open

Start from a real
system boundary.

Three complete patterns for products that need grounded answers, connected data, or visible browser work.

01

Permission-aware support

Authenticate before retrieval, derive filters from trusted roles, and rank only documents the user may access.

principal → permission filter → retrieval → answer
@anvia/core@anvia/openai
Build the support RAG API
02

Neo4j GraphRAG

Extract a typed graph, traverse allowed relationships, and return provenance-linked evidence.

documents → graph → bounded traversal → evidence
@anvia/core@anvia/neo4j
Build Neo4j GraphRAG
03

Visible browser automation

Run Chromium in Docker, restrict navigation, expose semantic tools, and coordinate human takeover.

sandbox → Chromium → semantic tools → human
@anvia/core@anvia/browser@anvia/sandbox
Build a browser agent
ANVIA V1 · STABLE

Anvia v1 is stable.
The contract is yours.

Anvia 1.0 puts agents, providers, memory, streaming, React, Studio, observability, and evaluation on one synchronized stable package train.

$ pnpm add @anvia/core @anvia/openaiInstall from npm's default latest tag and keep Anvia package versions aligned.