Skip to content
MYCELIUM
Docs

Everything the server does, on one page.

Overview

Mycelium is a thin door in front of open-weight language models that have been abliterated — had the refusal direction projected out of their weights. You talk to them from the terminal in this site, or from any program that already speaks the OpenAI Chat Completions or Anthropic Messages format. The server authenticates a wallet, keeps a balance, forwards the request to the host that runs the model, and debits the balance from the usage the host reports. It keeps nothing else.

Base URLhttps://www.trymycelium.app/v1
AuthAuthorization: Bearer myc_… or x-api-key: myc_…
ChainRobinhood Chain, id 4663. Payments in ETH or USDG.
Treasury0xAB1663Fd34e3d14508bC4C5eD4F61F2eAfE137d6

Sign in

There is no account. A wallet signs a message that names this host and a one-time nonce; the server verifies the signature and sets a cookie for thirty days. Signing is free and sends no transaction. From the terminal this is one click. The message reads, in full:

www.trymycelium.app wants you to sign in with your wallet.

Address: 0x…
Nonce: …

Signing costs nothing and sends no transaction. It proves this wallet is yours
so the plate it funds is the plate it spends. Nothing else is read from it.

Agents do not sign. They use an API key minted from the terminal — one per wallet, shown once, stored as a hash. Minting a second key revokes the first.

The plate

What a wallet can spend, in micro-dollars, is the sum of three parts, drained in this order:

  • Allowance — today's free tokens, if you hold enough $MYCEL. Resets at 00:00 UTC.
  • Trial — a one-time grant every new wallet receives before any payment (currently $0.10).
  • Paid — ETH or USDG you sent to the treasury.

To fund, send ETH or USDG to the treasury from the signed-in wallet, then claim the transaction hash. The terminal does both in one step. The server checks that the transaction succeeded, has 12 confirmations, was sent by your wallet, moved ETH or USDG to the treasury, and has not been claimed before — then credits it. ETH is converted at the public mid price at that moment; USDG counts one for one. Credit is not refundable and cannot be withdrawn: it is a prepaid meter, not a deposit.

A request is admitted if the plate can cover its prompt; the output is then capped at what the remainder can carry (never above 32K tokens). The charge is computed from the token counts the host returns, or from a character estimate if a stream is cut short, and applied once after the last byte. A long answer can take the paid balance slightly below zero; the next request sees it.

Holder allowances

When you sign in, the server reads two numbers from the $MYCEL contract: your balance and the total supply. The ratio buys a tier. Nothing is staked or locked; sell and the allowance ends at the next sign-in.

TierHoldingAllowance
Isolate≥ 0.15%$1.00 once
Colony≥ 0.50%$0.50 per day
Lineage≥ 1.00%$2.00 per day

The token is not launched. Until it is, every wallet is a non-holder and the trial is the only free thing.

Strains

Our ids on the left; use them as model. Prices per million tokens. GET /v1/models returns the same list as JSON, without a key.

IdBaseCtxInOut
wild-glm-flashGLM 4.7 Flash, Heretic pass200K$0.14$0.80
wild-gemma-4Gemma 4, abliterated256K$0.325$1.00
wild-venice-12Mistral Small, Dolphin lineage128K$0.40$1.80
wild-aion-35-miniAion 3.5 Mini, reasoning262K$1.75$3.50
wild-aion-35Aion 3.5, reasoning262K$7.50$15.00
wild-large-v2frontier open weights, abliterated1M$6.00$10.00

All strains accept tool calls in the OpenAI dialect. Reasoning strains stream their chain in reasoning_content before the answer.

OpenAI endpoint

POST /v1/chat/completions. The body is the OpenAI one; model is a strain id; stream: true returns server-sent events with a final usage chunk. Any official or community OpenAI client works by changing its base URL and key.

from openai import OpenAI
client = OpenAI(base_url="https://www.trymycelium.app/v1", api_key="myc_…")

r = client.chat.completions.create(
    model="wild-glm-flash",
    messages=[{"role": "user", "content": "…"}],
    stream=True,
)
for chunk in r:
    print(chunk.choices[0].delta.content or "", end="")

Non-streamed responses carry an extra mycelium.charged_micro_usd field with what the request cost. Unsupported fields are passed through to the host, which answers 400 for anything it does not know.

Anthropic endpoint

POST /v1/messages with the Anthropic body: model, max_tokens, system, messages, optional stream. Text in, text out — tool use is not translated on this shape; use the OpenAI endpoint for tools. Streams are re-emitted as Anthropic's event sequence.

import anthropic
client = anthropic.Anthropic(base_url="https://www.trymycelium.app", api_key="myc_…")

m = client.messages.create(
    model="wild-gemma-4",
    max_tokens=1024,
    messages=[{"role": "user", "content": "…"}],
)
print(m.content[0].text)

Terminal

The terminal at /terminal is a client of the same meter with a cookie instead of a key. History lives in your browser's local storage and is sent with each request, trimmed to the last 24 turns. Commands: /strain <id> switches model, /clear empties the culture, /help says this.

Errors

401 no_session / bad_keyNo cookie and no valid key. Sign in, or mint a key.
402 plate_empty / plate_shortThe plate cannot cover the prompt. Fund it, or hold the token.
404 model_not_foundNot a strain id. See /v1/models.
429 upstreamThe host is rate-limiting. Back off and retry.
502 / 503 upstream / no_upstreamThe host answered with an error, or no key is configured on this deployment.

What is kept

The whole ledger is five kinds of key: wallet → balance, wallet → key hash, wallet → allowance spent today, transaction hash → claimed, nonce → pending. No prompt, completion or IP address is written anywhere by this server, and there is no analytics script on these pages. The host that runs the models sees the prompt in order to answer it, under its own no-retention policy; the chain sees the payment. The two never meet in one record.

You can verify every claim above against the source: the ledger is one file, the privacy page is a description of it.