First release of the Elixir SDK for Norns, the durable agent runtime on BEAM. Define agents and tools, connect as a worker, or drive agents as a client.
Highlights
- Worker — connect to Norns over WebSocket (Slipstream), register agents and tools, and handle LLM + tool tasks from the orchestrator. Reconnects automatically. Drops into your supervision tree.
- Client — send messages, poll runs to completion, and manage conversations. All read functions return typed structs (
RunResponse,EventResponse,AgentResponse,ConversationResponse,MessageResult), each built from afrom_map/1constructor — access fields with dot syntax (run.status,agent.id). - Streaming —
NornsSdk.Client.stream/4forwards a run's events to a subscriber process as{:norns_event, pid, %StreamEvent{}}messages, with{:norns_closed, pid, reason}on early socket close. Idiomatic Elixir: events land in your mailbox, so it drops straight into aGenServerorLiveViewhandle_info/2. - Multi-provider LLM via ReqLLM (Anthropic, OpenAI, Google, Mistral, and more), with automatic provider inference from the model name.
- Provider-neutral wire format handling via
NornsSdk.Format.
Install
{:norns_sdk, "~> 0.1"}Known limitations
- Early v0.1 focused on core worker/client flows; API contracts will continue to harden alongside Norns runtime releases.
- Live streaming is exercised via an integration test against a running Norns instance (tagged
:llm), not in the default unit suite.
See the CHANGELOG for the full list.