Packages
nous
0.16.2
0.17.0
0.16.6
0.16.5
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.8
0.15.7
0.15.6
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.3
0.14.2
0.14.1
0.14.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.17
0.12.16
0.12.15
0.12.14
0.12.13
0.12.12
0.12.11
0.12.9
0.12.7
0.12.6
0.12.5
0.12.3
0.12.2
0.12.0
0.11.3
0.11.0
0.10.1
0.10.0
0.9.0
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.5.0
AI agent framework for Elixir with multi-provider LLM support
Current section
Files
Jump to
Current section
Files
lib/nous/agent_registry.ex
defmodule Nous.AgentRegistry do
@moduledoc "Registry for looking up agent processes by session ID."
def child_spec(_opts) do
# Partition across schedulers so high-concurrency lookups (e.g. a
# LiveView fan-in calling Nous.AgentRegistry.lookup/1 from many sockets)
# don't serialize on a single ETS-backed partition. Registry defaults to
# partitions: 1 which becomes a contention point at scale.
Registry.child_spec(
keys: :unique,
name: __MODULE__,
partitions: System.schedulers_online()
)
end
def via_tuple(session_id) do
{:via, Registry, {__MODULE__, session_id}}
end
def lookup(session_id) do
case Registry.lookup(__MODULE__, session_id) do
[{pid, _}] -> {:ok, pid}
[] -> {:error, :not_found}
end
end
end