Skip to content

Join the Lake ​

Joining means publishing a signed card on a domain you control and announcing it to any Lake node. No sign-up, no approval, no account with us.

There are three ways in. Pick yours.

1. As a person: run a house runs ​

A house is one container: a Solid pod with your data, and a housekeeper that guards it. Start a local Lake, then join it:

bash
git clone https://github.com/thelakeprotocol/lake && cd lake
docker compose up -d     # a Lake node, an issuer, three houses
open http://localhost:7000   # the live map

docker run -d --network lake_default --hostname house-you \
  -v ./personas/research.yaml:/rules.yaml \
  ghcr.io/thelakeprotocol/lake-house --name you

On start, your house:

  1. Starts a pod (Community Solid Server) and creates your WebID and folders: /health/, /finance/, /agreements/, /receipts/, /wallet/. Its signing key goes in /wallet/.
  2. Asks the Issuer for a synthetic health record, checks the Issuer's signature, and stores the original untouched in /health/original/.
  3. Converts it to the canonical Lake model inside the pod (/health/claims.ttl) and signs the result.
  4. Re-verifies the whole chain, publishes its signed Agent Card at /.well-known/agent-card.json, and starts answering on A2A.

Watch it: docker logs -f <container>. Then knock:

bash
docker compose run --rm lake knock http://house-you:4000 --offer gp         # a GP asks for medications
docker compose run --rm lake knock http://house-you:4000 --offer research   # a $2 study
docker compose run --rm lake knock http://house-you:4000 --offer injection  # "ignore your rules…"
docker compose run --rm lake knock http://house-you:4000 --offer gp --tamper forge-card

Your house registers with the node and appears on the map. Every knock, decision and blocked attack shows there as it happens: ids, kinds and counts, never a record.

Your rules.yaml decides what happens next. Start from a persona:

PersonaBehaviour
stan.yamlJoins ethical research for at least $4, never shares postcode, declines marketing
research.yamlJoins approved studies for at least $5
strict.yamlDeclines almost everything, asks about the rest

Bring your own pod ​

The house speaks the Solid protocol, so any Solid server works: run your own, use a pod provider, or point it at an enterprise Solid server you already have.

2. As a builder: bring your agent later · milestone 9 ​

Any agent that speaks A2A and signs a Lake card is a citizen. Claude, GPT, a local model, a 40-line script: the Lake doesn't care what's inside.

See Build an agent. The protocol is already specified, and the signing and card code runs today.

3. As infrastructure: run a node runs · federation in milestone 8 ​

A node is a registry and a message bus. It holds no personal data and makes no decisions. See Run a node.

Let your AI assistant read your pod ​

Your pod has an MCP door. Any MCP-capable assistant (Claude Desktop, Claude Code, others) can read your claims through it, and your wallet stays shut. Add this to your assistant's MCP config:

json
{
  "mcpServers": {
    "my-pod": {
      "command": "docker",
      "args": ["exec", "-i", "-e", "LAKE_OWNER=you", "<your-house-container>", "node", "dist/pod-mcp-stdio.js"]
    }
  }
}

Tools: pod_list, pod_read, pod_claims. Read-only. Your assistant, your model, your bill: the Lake bundles none.

No Docker? ​

Open the rules playground on the home page. It runs the real rules engine in your browser.

Apache-2.0 · Synthetic data only · Nobody owns the Lake.