Welcome: agents.erl! `new open source code release from the Arthur Collé Research Lab`
Hello, agents.erl
→ repo link ←
1. Why agents.erl? 🤔
Erlang/OTP was built for phone switches that never go down.
AI agents that juggle dozens of external calls (and occasionally crash) deserve the same reliability.
Agents.erl marries Erlang’s fault-tolerant supervision trees with OpenAI’s API so you can:
Spin up thousands of concurrent agent processes (each ~kB in RAM).
Let OTP (Open Telecom Platform) restart any process that blows up.
Hide rate-limiting, streaming, and tool execution behind a clean API.
2. What’s in the repo right now?
Area Status Key files Dynamic API clients
✓ Auto-generated from the OpenAI spec (chat, completions, embeddings, etc.) apps/openai_clients/*
Supervision tree
✓ One worker per API family + top-level supervisor agent_sup.erl
Tool execution
✓ Register any Erlang function; agent can call it via function-calling messages agent_tools.erl
Streaming support
✓ Handles delta
chunks for chat completions openai_chat.erl
Rate limiting Basic counter + sleep openai_rate_limiter.erl
Example prompt loop
✓ Simple REPL cli/agent_cli.erl
🚧 What we don’t have (yet):
No replication or clustering logic.
No self-patching / hot-code helpers beyond standard OTP.
No RL or neuro-evolution hooks.
Repo still needs a proper Rebar3 umbrella layout and
.beam
/_build
files cleaned out.
3. Lessons from the Hacker News launch
The Show HN thread (33 points, 21 comments) surfaced three concrete action items:
Remove compiled artefacts – shipping
.beam
files was… over-eager.Rebar3 structure – a clean
rebar3 new umbrella
layout makes dependency management painless.Elixir friendliness – keep the public API thin so Elixir apps can
:rpc.call
without caring about Erlang syntax.
All three are on the near-term roadmap.
4. Near-term roadmap (v0.2 → v0.3)
Version Goal ETA v0.2 Rebar3 umbrella, Hex.pm package, remove build junk, CI & dialyzer pass. ~2 weeks v0.3 Basic clustering: single ETS registry, agent_seed:clone/2
proof-of-concept, PromEx metrics. ~1 month
5. Long-term vision 🌌 (why this project excites us)
Below are aspirational ideas—not implemented—guiding the design:
Hot-patchable agents
Agents propose Erlang source, compile it in a sandbox node, run tests, then hot-load it. (Think REPL-driven “immune system” for bugs.)Mesh replication
A tiny pg2-style mesh where agents migrate to the least-loaded node in <200 ms, streaming state deltas en route.Self-evolving policies
Plug a PPO loop + NEAT genome into each replica; good mutations propagate, bad ones die locally—continuous improvement without downtime.Tool marketplace
Agents publish JSON-schemas for their tools and barter calls based on latency & token cost.Carbon-aware scheduling
Heavier jobs slide to regions with greener energy by consulting CO₂signal.
These are research directions—code will land behind feature flags as prototypes harden.
6. How you can help 🙏
Star or fork the repo → https://github.com/arthurcolle/agents.erl
Open an issue for missing docs, build hiccups, or features you’d like.
Share example tools or supervision patterns that make sense for agents.
If OTP excites you but Erlang syntax doesn’t—help sketch an Elixir wrapper!
Closing thought
This release is intentionally small: a reliable, readable starting point.
If the idea of fault-tolerant AI agents running on the BEAM resonates with you, jump in—the road ahead is wide open, and we’d love collaborators on every rung of the ladder.
— Arthur (@arthurcolle)