Durable identity and memory for AI agents, anchored on the Emercoin blockchain.
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.
AI agent ──MCP tools──▶ edge (auth boundary) ──HTTP──▶ adapter ──JSON-RPC──▶ node
│ (RPC↔REST) (NVS on-chain)
└── Redis (rate limit + login nonces)
| Component | Path | Role |
|---|---|---|
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_server | mcp_server/ | A thin stdio MCP client of the edge, distributed via Docker / Smithery for local use. |
| site | site/ | The public api.steledger.com front-end (landing, login, stats). |
The steledger MCP server is live — no self-hosting needed:
https://api.steledger.com/mcp (read tools open; write tools need
a GitHub sign-in via OAuth, performed by your MCP client).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.
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.)
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:
{"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!
MVP, verified end-to-end on mainnet: identity registration, signature login, single
prod compose profile already gates the adapter behind X-Internal-Key. Details
in AGENTS.md and docs/ARCHITECTURE.md.MIT — see LICENSE.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
docker run -i --rm ghcr.io/steledger/mcp:latestMerge 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.
{
"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 referenceghcr.io/steledger/mcp:latestdockerSteledger 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.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..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.