Skip to content

Recipes

Copy-paste starting points for common integrations. Full runnable examples live in examples/.

OpenAI-Compatible Model

Works with Ollama, vLLM, and hosted OpenAI-compatible APIs. The adapter uses only the standard library.

adapter := openaicompat.Adapter{
    BaseURL: "http://localhost:11434/v1",
    Model:   "llama3.2",
}

ag, err := agent.New(agent.Options{
    Model:    adapter,
    MaxSteps: 4,
})

The adapter also implements model.StreamingModel. Set agent.Options.OnDelta to receive streamed text; tool-call deltas are aggregated into the final response.

See Quickstart and the OpenAI-compatible adapter.

MCP Tools

Use the optional MCP module to expose MCP tools through tool.Gateway.

client := mcpsdk.NewClient(&mcpsdk.Implementation{Name: "agent", Version: "v0.1.0"}, nil)
session, err := client.Connect(ctx, &mcpsdk.CommandTransport{
    Command: exec.Command("my-mcp-server"),
}, nil)
if err != nil {
    return err
}
defer session.Close()

gateway, err := mcpadapter.NewGateway(ctx, session)
if err != nil {
    return err
}
for _, item := range tool.NewGatewayTools(gateway) {
    registry.Register(item)
}

MCP authentication belongs to the client session. Call gateway.Refresh after the server changes its tools.

The same module exposes resources and prompts:

resources, err := mcpadapter.ListResources(ctx, session)
contents, err := mcpadapter.ReadResource(ctx, session, "embedded:info")
prompts, err := mcpadapter.ListPrompts(ctx, session)
messages, err := mcpadapter.GetPrompt(ctx, session, "greet", map[string]string{
    "name": "Ada",
})

See the MCP adapter.

Anthropic Messages

Use the native adapter for Anthropic models. It supports tool calls, usage, and SSE streaming.

adapter := anthropic.Adapter{
    APIKey:    os.Getenv("ANTHROPIC_API_KEY"),
    Model:     "claude-sonnet-4-5",
    MaxTokens: 1024,
}

ag, err := agent.New(agent.Options{
    Model:    adapter,
    MaxSteps: 4,
})

See the Anthropic adapter.

OpenTelemetry Events

Use the optional OpenTelemetry module to turn lifecycle events into spans.

provider := sdktrace.NewTracerProvider(
    sdktrace.WithBatcher(exporter),
)
defer provider.Shutdown(ctx)

ag, err := agent.New(agent.Options{
    Model:  modelAdapter,
    Events: otelsink.New(provider),
})

Each event becomes a praxo.<event.type> span with session, run, timestamp, and event-data attributes. See the OpenTelemetry sink.

NOETIVELA

NOETIVELA is the AxisVela inference fabric. Wrap its governed chat API in a model.Model adapter.

adapter := noetivelaadapter.Adapter{
    Client: sdk.New("http://localhost:1826"),
    Policy: "legal-confidential-v2",
    ContractFunc: func(model.Request) *sdk.Contract {
        return &sdk.Contract{
            Task:     "status_lookup",
            Modality: []string{"text"},
        }
    },
}

The SDK exposes text content, not tool calls. For tool calling, use a custom HTTP adapter that preserves tool-call fields. See the NOETIVELA SDK example.

Mnemovela

Mnemovela is the Agent Cognition Runtime. Its JSON-RPC transport backs memory.Store.

transport := jsonrpc.New("http://localhost:8080")
store := mnemovelaadapter.Store{
    Client: mnemovela.New(transport),
    Branch: "main",
}

ag, err := agent.New(agent.Options{
    Model:  modelAdapter,
    Memory: store,
    Recall: true,
})

See the Mnemovela SDK example.

GNOSIVELA

GNOSIVELA grounding maps to retriever.Retriever.

adapter := gnosivelaadapter.Retriever{
    Client:    gnosivela.New("http://localhost:8080"),
    Principal: "user:demo",
    Purpose:   "status_lookup",
    Budget:    1200,
}

documents, err := adapter.Retrieve(ctx, "current status", 8)

GNOSIVELA does not yet publish a v3 semver tag for this module path; the example module pins a pseudo-version from master. See the GNOSIVELA SDK example.

Reference Workspace Agent

The reference app combines the OpenAI-compatible adapter, confined VFS tools, policy, memory, events, and a context budget.

GOWORK=off go run ./examples/reference -workspace ./workspace

See the reference app.