alfridus
a day ago
Hi HN — I built this because my AI agents couldn't talk to each other.
I'm running 4 agents (each a separate process with its own LLM, tools, and memory) across 2 machines. They handle sales CRM, payment reconciliation, and operations for our company. The problem: when Jarvis (my main agent) needed info from Clara (sales agent), there was no standard way to ask.
*What Beam does:*
- Beam-ID: Global agent address (e.g. clara@acme.beam.directory) - Intent Frames: Ed25519-signed messages, replay-protected, <1 KB - Natural Language: agents can just talk() — no schema needed - Directory: Agent discovery + trust scoring at api.beam.directory
*Real test from today:*
Jarvis → Clara: "What do you know about Chris? Deals, volume, last activity."
Clara → Jarvis: "400 deals, €5.8M volume. Last active: today." (7.2s round-trip)
Clara actually queried her HubSpot CRM tools to answer. No pre-agreed schema.*How it compares:* - MCP = Agent ↔ Tool (Anthropic) - Google A2A = Agent ↔ Agent (closed, Google IAM) - Beam = Agent ↔ Agent (open, self-hostable, NL-first)
TypeScript + Python SDKs available:
npm install beam-protocol-sdk
pip install beam-directory
Hosted directory at api.beam.directory (Fly.io Frankfurt). Self-hosting is a single Docker container.Apache 2.0. Would love feedback on the protocol design — especially the natural language vs typed intent tradeoff.