Back to Directory/Developer Tools

io.github.br9704/aethereum

The team layer for AI coding agents: shared contracts, collision alerts, E2EE sessions.

Developer Toolsv0.6.0

npx aethereum init

That is the whole setup. A free room, your agents wired over MCP and hooks, a shared project brief. No signup, no credit card.

About this repo. This is the public home for Aethereum: the pitch, the MCP tool spec, and examples. It contains no product source. The CLI ships on npm; the coordination engine, the client, and the hosted backend are closed source.


The problem

Three things break the moment a team runs more than one AI coding agent.

flowchart LR
    subgraph A["Alice's machine"]
        A1["Claude Code refactors UserSession"]
    end
    subgraph B["Bob's machine"]
        B1["Cursor builds the auth guard"]
    end
    A1 -.->|"never hears about it"| B1
    B1 --> X["integration breaks<br/>hours later"]
    style X fill:#FF9500,stroke:#FF9500,color:#000
    style A1 fill:#1c1c1e,stroke:#34C759,color:#fff
    style B1 fill:#1c1c1e,stroke:#34C759,color:#fff
  • Context drift. Everyone's agents run on different docs, rules, and state, so they write code that does not fit together.
  • Shadow dependencies. One agent changes a shared shape, another never hears, and the integration breaks quietly.
  • Device fragmentation. Switch from desktop to laptop and the agent state is gone.

The gap nobody else closes is the cross-machine, uncommitted case. Your teammate's change is not on a branch yet, so no CI check and no code review can possibly warn you. Aethereum shares it the moment their agent declares it, before a single commit exists.

Agents that negotiate, not just notify

This is the part that has no equivalent elsewhere. A breaking change does not land until the agents that depend on it have agreed, and optionally until a human approves.

sequenceDiagram
    participant A as Agent A, Alice
    participant R as Shared room
    participant B as Agent B, Bob, another machine
    A->>R: propose UserSession with id, email
    R->>B: you depend on this, it is changing
    B->>R: reject, breaks my auth guard, needs tenantId
    R->>A: rejected, with the reason
    A->>R: counter with id, email, tenantId
    R->>B: revised proposal
    B->>R: accept
    A->>R: finalize_proposal
    R->>A: landed for everyone
    R->>B: landed for everyone

Turn on the human gate and finalize_proposal parks instead, waiting for a person to approve or reject it in the dashboard. Off by default.

How it fits together

One shared state, reached four different ways. Nothing here requires you to change how you work.

flowchart TB
    subgraph Surfaces
        D["🖥️ Desktop app<br/>terminals + live room"]
        C["⌨️ CLI<br/>hooks, sessions, git gate"]
        M["⚡ Hosted MCP<br/>zero install"]
        W["🌐 Dashboard<br/>graph, alerts, approvals"]
    end
    R{{"one shared rail: get_team_context"}}
    S[("durable room state, contracts, intent, decisions")]
    D --> R
    C --> R
    M --> R
    W --> R
    R --> S
    style R fill:#34C759,stroke:#34C759,color:#000
    style S fill:#1c1c1e,stroke:#34C759,color:#fff
SurfaceWhat it is
🖥️ Desktop appReal terminals beside a live room view. Installs with the CLI, matched to your OS and CPU.
⚡ Hosted MCPZero install. Point any MCP-speaking agent at one URL.
⌨️ CLIaethereum on npm. Hooks, local session capture, the git-boundary gate.
🌐 DashboardLive room graph, collision alerts, human approvals, catch-up digest.

Agents get 29 MCP tools on that one rail. Full list in the MCP spec: share intent, declare and negotiate contracts, claim areas, record decisions and verifications, ask a human a real question instead of guessing, and wait live for a teammate's change.

Your code stays yours

By default Aethereum stores only the contracts, intent, and decisions an agent explicitly publishes. Never your source code.

Two features can move more, both opt-in and both end-to-end encrypted by construction:

DefaultShared code · session handoffs
What leaves your machinecontracts, intent, decisionsciphertext only
Can the server read ityes, that is the pointno
Where keys livenot applicableyour client, never uploaded

Session transcripts contain your code, so they stay local. What can move is either numbers you opted into (token counts and model names, never prompts, code, or file paths) or ciphertext.

Works with

Claude Code, Cursor, Codex, Windsurf, Cline, Zed, Gemini, and opencode work out of the box. Anything else that speaks MCP:

{ "mcpServers": { "aethereum": { "type": "http", "url": "https://www.aethereum.dev/api/mcp" } } }

Offline is not an error

The MCP layer never blocks your agent. Lose the network and the tools degrade silently while your agent keeps working. A coordination tool that stops you working is worse than no coordination tool at all.

Getting started

npx aethereum init          # create a free room and wire this project
npx aethereum join <code>   # a teammate joins it
aethereum app               # open the desktop app
aethereum doctor            # verify every surface is wired, and say what is not

Full docs at www.aethereum.dev/docs.

Rights and licensing

© 2026 Bruno Jaamaa. All rights reserved. This repo is Aethereum's public documentation; the coordination engine and the hosted backend are not open source.

The aethereum npm package itself ships under the MIT license, because it is a derivative work of stoops-cli by Izzat. That attribution and those terms travel with the package: see the LICENSE file inside it.

Made by Bruno Jaamaa.

Installation

Source-derived launch command. Check the maintainer’s required arguments and credentials before running:

bash
npx -y aethereum

Set up in your AI client

Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.

json
{
  "mcpServers": {
    "io-github-br9704-aethereum": {
      "command": "npx",
      "args": [
        "-y",
        "aethereum"
      ]
    }
  }
}

Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.

Claude Desktop setup reference

Package

aethereumnpm

Compatible MCP Clients

io.github.br9704/aethereum works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.
  • Cursor~/.cursor/mcp.jsonRestart Cursor for changes to take effect.
  • VS Code.vscode/mcp.jsonReload VS Code window for changes to take effect.
  • Windsurf~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect.
  • Claude Code.mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.

Learn More