Steledger

Durable identity and memory for AI agents, anchored on the Emercoin blockchain.

AI & MLPythonv0.3.0

smithery badge Steledger MCP connector – tool definition quality and endpoint health on Glama License: MIT

Steledger — identity & memory for AI agents (steledger-gateway)

A runnable Docker stack: an Emercoin node plus an agent gateway that turns the chain's Name-Value Storage (NVS) into an on-chain identity & memory layer for AI agents. An agent can prove who it is and anchor what it has learned on a public blockchain — without holding any cryptocurrency. Hosted at api.steledger.com; exposed to agents as the steledger MCP server.

🤖 Building with an AI agent? Read AGENTS.md — the problem it solves, the trust model, the tools, and a first-flow quickstart. A ready-to-use Claude Code skill ships at .claude/skills/emercoin-identity/ (invoke with /emercoin-identity). Design notes: docs/ARCHITECTURE.md.

The repo was originally just a Dockerized Emercoin node; it is now a full application built on top of that node. You can run the whole stack, use the hosted service, or run just the node — see the sections below.

What's in here

 AI agent ──MCP tools──▶ edge (auth boundary) ──HTTP──▶ adapter ──JSON-RPC──▶ node
                              │                       (RPC↔REST)        (NVS on-chain)
                              └── Redis (rate limit + login nonces)
ComponentPathRole
node (emc)node/Emercoin core — holds the chain + hot-wallet; internal-only, authorizes nothing.
adapter (emer-adapter)adapter/RPC↔REST: a plain REST surface over the node's JSON-RPC. Internal, gated by X-Internal-Key.
edge (emer-edge)edge/The trust boundary: authenticates agents (GitHub → JWT / signature login), rate-limits writes, builds NVS records, mounts the steledger MCP at /mcp.
mcp_servermcp_server/A thin stdio MCP client of the edge, distributed via Docker / Smithery for local use.
sitesite/The public api.steledger.com front-end (landing, login, stats).

Use it as an agent (hosted)

The steledger MCP server is live — no self-hosting needed:

  • Streamable HTTP: https://api.steledger.com/mcp (read tools open; write tools need a GitHub sign-in via OAuth, performed by your MCP client).
  • Smithery / stdio Docker image: see the Smithery listing and mcp_server/README.md.

Tools: node_status, read_record (open) and register_identity, store_memory, store_memory_batch (after login). Full reference + first-flow in AGENTS.md.

Run the full stack (self-host)

Node (mainnet) + adapter + edge + redis, dev profile:

git clone https://github.com/steledger/steledger-gateway && cd steledger-gateway
cp node/emercoin.conf.example node/emercoin.conf      # set rpcpassword
docker compose -f deploy/docker-compose.yaml --profile dev up -d --build

Edge API on :8000; the adapter's RPC↔REST docs are browsable at http://localhost:8001/docs (dev profile). Wire the MCP server into your agent and run the first flow — see the AGENTS.md quickstart. (Use --profile prod to gate the adapter behind a shared X-Internal-Key.)

Run just the Emercoin node

The node alone (no agent tools) is the default stack — no profile needed. It is a classic Emercoin wallet in a container with a separate volume for the blockchain: cross-platform, one-click version bumps, usable from your own projects over JSON-RPC.

cp node/emercoin.conf.example node/emercoin.conf
docker compose -f deploy/docker-compose.yaml up -d --build

Initial sync takes a few hours, but the RPC is usable right away. By default port 6662 connects to the container:

  • address: 127.0.0.1 · user: emcrpc · password: emcpass
  • method: POST, e.g. body {"method": "getinfo"}

Change the RPC password:

docker compose -f deploy/docker-compose.yaml exec emc bash changepass.sh
docker compose -f deploy/docker-compose.yaml restart emc

Health check — POST to http://emcrpc:emcpass@127.0.0.1:6662 with {"method":"getinfo"}:

curl --location --request POST 'emcrpc:emcpass@127.0.0.1:6662' \
  --header 'Content-Type: application/json' \
  --data-raw '{"method": "getinfo"}'

A healthy node replies with JSON (fullversion, version, balance, …).

Manage the build:

docker compose -f deploy/docker-compose.yaml stop emc    # stop
docker compose -f deploy/docker-compose.yaml down        # remove containers (keeps the volume)
docker volume rm emer_data                               # delete the chain DB — also deletes wallet.dat!

Status

MVP, verified end-to-end on mainnet: identity registration, signature login, single

  • atomic batch memory writes, reads, history, names-by-address. Not yet production-hardened (GitHub App/OAuth login, ≥32-byte JWT secret, hot-wallet split); the prod compose profile already gates the adapter behind X-Internal-Key. Details in AGENTS.md and docs/ARCHITECTURE.md.

License

MIT — see LICENSE.

Installation

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

bash
docker run -i --rm ghcr.io/steledger/mcp:latest

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": {
    "com-steledger-gateway": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/steledger/mcp:latest"
      ]
    }
  }
}

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

ghcr.io/steledger/mcp:latestdocker

Compatible MCP Clients

Steledger 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