Skip to content

SDK reference: noeta.sdk

noeta.sdk is the one module you import. The client verbs, the agent recipe, the extension interfaces and the plugin mechanism are all re-exported from it, so application code never reaches into noeta.client, noeta.core or any other internal package.

python
from noeta.sdk import query, Client, Options, tool

The source of truth for every name on these pages is the __all__ list in packages/noeta-sdk/noeta/sdk/__init__.py. If a name is not in __all__, it is not public, and a future release may move it.

Where things live

The surface is large enough that it is split into three focused pages. Pick the one that matches the question you have.

PageCoversReach for it when
query / Clientquery, QueryResult, Client and all its verbs, the resident worker pool, inspection, the typed error surfaceyou are driving an agent — starting a turn, approving a tool call, resuming a conversation
OptionsOptions, AgentDefinition, SystemPromptPreset, compile_options, permission modes, plugin activation, and HostConfig host wiringyou are configuring an agent — which tools, which prompt, which storage backend
Types & testingthe extension interfaces, message and content types, LLMResponse / Usage, the @tool authoring API, noeta.sdk.testingyou are implementing something Noeta calls back into — a tool, a provider, a guard

Two more reference pages sit alongside them: Plugins for the packaging and discovery mechanism, and Presets for the four official agents in noeta.presets.

Submodules

Four names under noeta.sdk are separate modules rather than root re-exports, because importing them pulls in weight most callers do not need.

ModuleHoldsWhy it is separate
noeta.sdk.providersAnthropicProvider, OpenAICompatProvider, OpenAIResponsesProvider, CATALOG, ModelSpec, register_models, find_spec, catalog_modelsonly a caller that builds a network provider pays for httpx
noeta.sdk.storageopen_storage_stack plus the sqlite / postgres adaptersonly a caller that chose Postgres pays for psycopg
noeta.sdk.testingFakeLLMProvidertest material must not be reachable from a production import
noeta.presetsthe four official agents and their promptsre-exported from the root as presets, and importable directly

All four resolve lazily, so nothing statically imports noeta.builtins — the rule that keeps the kernel free of vendor code.

The shortest complete program

python
from noeta.sdk import Options, query
from noeta.sdk.providers import AnthropicProvider

options = Options(system_prompt="You are a concise coding assistant.")

result = query(
    options,
    goal="List the Python files in this directory.",
    provider=AnthropicProvider(api_key="sk-ant-…"),
    workspace_dir=".",
)
print(result.answer())
# → 'docs/conf.py, setup.py, …'  (the agent's terminal answer, as a str)

query is the one-shot path. For a conversation that spans turns, build a Client instead — see query / Client.

Next

Released under the Apache License 2.0.