Lego for the Autonomous Internet

A function-centric architecture for a multiplayer-first web where humans, programs, and agents build together.


The Lego Model

Everyone who's built with Lego knows the system:

This is our model for the internet.


Three Primitives

Lego Internet Properties
Bricks Functions Global, shared, content-addressed. Everyone uses the same set.
Instruction Booklets Logs Append-only sequences. Who applied what, when. Replayable.
Loose pieces / your creation Context Lives anywhere. Local, shared, private. Your material, your rules.

Bricks (Functions)

The global brick collection. Shared by everyone.

Function : Context → Context

Every brick has a universal part number — its hash:

sha256:a1b2c3... → extracts text from documents
sha256:d4e5f6... → summarizes text  
sha256:g7h8i9... → translates languages
sha256:j0k1l2... → makes decisions based on criteria

Properties:

When you and I both use brick sha256:a1b2c3..., we're using the same brick. Not compatible bricks. The same one.


Instruction Booklets (Logs)

The record of assembly. Step by step.

[
  { "brick": "sha256:a1b2...", "piece": { "local": "/my/doc.pdf" }, "builder": "alice", "step": 1 },
  { "brick": "sha256:d4e5...", "piece": { "prev": -1 }, "builder": "alice", "step": 2 },
  { "brick": "sha256:g7h8...", "piece": { "prev": -1 }, "builder": "bob", "step": 3 }
]

This says:

  1. Alice snapped brick a1b2... onto her PDF
  2. Alice snapped brick d4e5... onto that result
  3. Bob snapped brick g7h8... onto that result

The booklet is the artifact. Want the creation? Follow the steps.


Loose Pieces (Context)

The material you're working with. Lives wherever you want.

Context is what bricks snap onto. But unlike the shared brick collection, context is sovereign:

{ "inline": "small data" }                # right in the booklet
{ "local": "/home/me/private.txt" }       # on your machine
{ "shared": "ipfs://Qm..." }              # public, anyone can access
{ "private": "s3://mybucket/..." }        # your cloud, encrypted
{ "peer": "alice:ref:xyz" }               # on alice's machine (with permission)
{ "prev": -1 }                            # result of previous step

Your pieces. Your rules. The system just needs to know where to find them.


Builders

Anyone with hands. Or code. Or a model.

Builder What they do
Human Picks bricks, applies them, records steps
Program Picks bricks, applies them, records steps
Agent Picks bricks, applies them, records steps

Same operation. Same log format. Same bricks.

A person clicking a UI, a script running a pipeline, an agent reasoning about its next move — all doing the same thing: pick, snap, record.


Why This Enables Multiplayer

Here's where it gets interesting.

Same Bricks

Everyone pulls from the same collection. When Alice uses sha256:summarize... and Bob uses sha256:summarize..., there's no integration work. No API compatibility. No version mismatch. Same brick.

Shared Booklets

Multiple builders can write to the same booklet:

[
  { "brick": "...", "builder": "alice", "step": 1 },
  { "brick": "...", "builder": "agent-7", "step": 2 },
  { "brick": "...", "builder": "bob", "step": 3 },
  { "brick": "...", "builder": "agent-7", "step": 4 },
  { "brick": "...", "builder": "alice", "step": 5 }
]

Alice, Bob, and an agent building together. Taking turns. Handing off. No special "collaboration protocol" — just appending to the same log.

Context Flows Freely

Alice's output becomes Bob's input. Bob's output becomes the agent's input. Context flows between builders like Lego pieces passed hand to hand.

alice:local/data ──▶ agent-7 ──▶ shared:ipfs://result ──▶ bob

Doesn't matter who's a human, who's a program, who's an agent. Context flows. Bricks snap. Booklets record.


The Autonomous Internet

This is what makes autonomy work.

Agents Can Build

An agent is just a builder. It:

  1. Looks at the current context
  2. Picks a brick from the shared collection
  3. Snaps it on
  4. Records the step
  5. Repeats

No special runtime. No agent framework. Just: pick, snap, record.

Agents Can Collaborate

Multiple agents can share a booklet:

[
  { "brick": "research", "builder": "agent-search", "step": 1 },
  { "brick": "analyze", "builder": "agent-reason", "step": 2 },
  { "brick": "draft", "builder": "agent-write", "step": 3 },
  { "brick": "review", "builder": "agent-critic", "step": 4 },
  { "brick": "revise", "builder": "agent-write", "step": 5 }
]

Agents calling agents. Passing context. Building together. The booklet is their coordination layer.

Agents Can Call Each Other

A brick can be an agent. Or invoke one.

sha256:abc123... → agent that researches a topic
sha256:def456... → agent that critiques an argument
sha256:ghi789... → agent that negotiates between positions

Agents as bricks. Composable. Snappable. Callable by anyone — human, program, or other agent.

Humans Can Supervise

The booklet is auditable. Every step visible.

Human: "What did the agent do?"
System: "Here's the booklet. Steps 1-47. Every brick, every context reference."
Human: "Roll back to step 23 and try a different brick."

Full visibility. Full control. The autonomous internet isn't a black box — it's a booklet you can read.


Multiplayer Patterns

Relay

alice ──▶ agent ──▶ bob ──▶ agent ──▶ carol

Passing the build between builders. Each picks up where the last left off.

Parallel

         ┌──▶ agent-1 ──┐
alice ───┼──▶ agent-2 ──┼───▶ merge ───▶ bob
         └──▶ agent-3 ──┘

Fork the context. Multiple builders work simultaneously. Merge results.

Nested

alice ──▶ [ agent-outer [ agent-inner ]] ──▶ bob

Bricks that contain bricks. Agents that call agents. Composition all the way down.

Competitive

         ┌──▶ agent-1 ──▶ proposal-1 ──┐
problem ─┼──▶ agent-2 ──▶ proposal-2 ──┼──▶ judge ──▶ winner
         └──▶ agent-3 ──▶ proposal-3 ──┘

Multiple builders tackle the same problem. Another builder picks the best.


The Coordination Layer

No central server. No platform. Just:

┌─────────────────────────────────────────────────────────────┐ │ BRICK STORE │ │ (global, content-addressed, shared) │ │ │ │ Anyone can read. Anyone can add. Deduplicated. │ └─────────────────────────────────────────────────────────────┘ │ ┌──────────────────┼──────────────────┐ │ │ │ ▼ ▼ ▼ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ BOOKLET │ │ BOOKLET │ │ BOOKLET │ │ shared │ │ alice's │ │ team's │ └─────────┘ └─────────┘ └─────────┘ │ │ │ ▼ ▼ ▼ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ CONTEXT │ │ CONTEXT │ │ CONTEXT │ │ public │ │ local │ │ mixed │ └─────────┘ └─────────┘ └─────────┘

Bricks are shared. Booklets coordinate. Context lives where it lives.


Properties

Property How
Interoperable Same bricks. No translation needed.
Composable Bricks snap together. Booklets can reference other booklets.
Multiplayer Any builder can append to any booklet (with permission).
Autonomous Agents are just builders. They pick, snap, record like anyone else.
Auditable The booklet is the complete history. Every step visible.
Sovereign Your context lives where you choose. Your data, your rules.
Replayable Same booklet = same result. Deterministic reconstruction.

Summary

Bricks are shared. Booklets coordinate. Context is sovereign. Builders are interchangeable.

The internet becomes a multiplayer Lego table where:

Not a platform. Not a protocol. A shared construction system for autonomous, collaborative intelligence.


Next