Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/natureloved/HashPilot/llms.txt

Use this file to discover all available pages before exploring further.

HashPilot AI is a strategy consultant embedded directly in the terminal. It knows the full Club HashCash game model — emission schedules, facility tiers, electricity rate mechanics, network dilution, and halving math — and gives you specific, numbers-first answers rather than generic advice. Enter your current setup in the context panel, ask your question, and get a verdict with the calculations behind it.

What the AI knows

HashPilot AI has deep knowledge of all core game mechanics baked into its system prompt.

Emission formula

Earnings = 1.25 hCASH/block × (your hashrate ÷ network hashrate). The AI applies this to your actual numbers.

Block cadence

Avalanche produces ~43,200 blocks per day at ~2 seconds each. All daily projections use this figure.

Halving schedule

Halvings fire every ~4,200,000 blocks, cutting block rewards from 1.25 to 0.625 hCASH. The AI factors proximity to the next halving into every long-range projection.

Electricity rates

Dynamic rates — Normal, Elevated, and Surge — change claim costs. The AI will tell you to hold during Surge if your fee exposure is high.

Facility tiers

Starter, Standard, Advanced, and Elite tiers each have different power ceilings and miner slot limits. Upgrade math is calculated on request.

Network dilution

If the network hashrate doubles, your earnings share halves. The AI models this when projecting growth scenarios.
The AI does not have access to live on-chain data such as the current network hashrate or real-time hCASH price. If you ask for a live stat, it will tell you so and direct you to hashcash.club. Provide your current numbers in the setup panel for the most accurate answers.

Setting up your context

Before asking questions, fill in the four fields in the setup panel on the left side of the AI Chat page. These values are automatically prepended to every message you send, so the AI can anchor its calculations to your actual situation.
FieldWhat to enter
Hashrate (TH/s)Your total active hashrate across all miners
Facility TierSTARTER / STANDARD / ADVANCED / ELITE
Unclaimed hCASHYour current pending balance
Electricity RateNORMAL / ELEVATED / SURGE

Example questions

These are the kinds of questions HashPilot AI handles well. Each one produces a math-backed verdict, not a generic answer.
“Should I upgrade my facility from Standard to Advanced?”The AI will calculate the power ceiling difference, estimate how many additional high-hashrate miners you could run, project the incremental daily hCASH earnings, and divide the upgrade cost by the earnings delta to give you a payback period in days.
“What’s the optimal claim strategy with 450 hCASH pending and a 15 hCASH fee?”The AI will evaluate whether your balance justifies the fee at your current rate tier, model the opportunity cost of waiting for a rate drop, and deliver a clear CLAIM or HOLD verdict with the breakeven threshold.
“How should I prepare for a halving with 500 TH/s hashrate?”The AI calculates your current daily earnings, projects post-halving earnings at 0.625 hCASH/block, and recommends whether to accelerate claiming, reinvest in more hashrate, or hold position based on your current numbers.
“Is now a good time to buy more miners?”The AI models the payback period for additional hashrate at your current network share, accounts for the electricity rate environment, and flags whether an upcoming halving changes the acquisition calculus.
The AI compares miners directly if you name them. Try: “Compare Jvidia JX420 vs HashTech Beast2 ASIC at my current setup” to get a side-by-side payback analysis.

Response style

HashPilot AI speaks like an experienced player, not a corporate assistant. Responses are direct and use real numbers. A few things to expect:
  • No markdown formatting — responses use ALL CAPS for emphasis and plain text sections instead of headers or bullet symbols. This is intentional so output renders cleanly in the terminal.
  • A clear verdict — every answer ends with an actionable call: CLAIM, HOLD, BUY, WAIT, or UPGRADE.
  • Honest uncertainty — if you ask for a live stat the AI cannot know, it says so instead of hallucinating a number.
  • Streamed output — responses appear word-by-word as the model generates them, not all at once.

Streaming behavior

Responses are delivered as a server-sent event stream. Text appears in the chat window progressively — you do not need to wait for the full answer before reading. The animated indicator (three bouncing dots) shows the AI is generating. Once the stream ends, the full message is in the chat history and can be exported.
If the channel shows CRITICAL ERROR: AI communication channel offline, the most likely cause is a missing or invalid ANTHROPIC_API_KEY in your environment. See API Keys setup to resolve this.

Chat history

You can clear or export the conversation at any time using the buttons at the bottom of the setup panel.
  • CLEAR — wipes the session history from the browser. The AI will not remember previous questions after a clear.
  • EXPORT — downloads the full conversation as a plain-text .txt file named hashpilot-log.txt.
The AI does not retain memory between sessions. Each new page load starts with a blank context.

API reference

The chat endpoint is available for developers building custom integrations or automating strategy queries.

POST /api/chat

Sends a message array to HashPilot AI and returns a streaming response.
This endpoint requires ANTHROPIC_API_KEY to be set in your environment. Requests without a valid key return a 500 error. See API Keys setup.
Request
POST /api/chat
Content-Type: application/json
messages
array
required
An ordered array of conversation turns. Each element is a message object with a role and content.
role
string
required
Either "user" or "assistant". The final message in the array must be "user".
content
string
required
The text of the message. To pass setup context to the AI, prepend a <user_context> block to the user message content (this is what the UI does automatically).
Example request body
{
  "messages": [
    {
      "role": "user",
      "content": "<user_context>\nCurrent Hashrate: 500 TH/s\nFacility Tier: STANDARD\nUnclaimed Balance: 450 hCASH\nElectricity Rate: NORMAL\n</user_context>\n\nUser Question: Should I claim now or wait for rates to drop?"
    }
  ]
}
Response The endpoint returns a text/event-stream response. Each event is a line prefixed with data: followed by a JSON object. The stream ends with data: [DONE].
Content-Type: text/event-stream
Cache-Control: no-cache
Connection: keep-alive
type
string
Event type from the Anthropic streaming API. Text content arrives in events with type: "content_block_delta".
delta
object
Present on content_block_delta events. Contains the incremental text chunk.
type
string
"text_delta" for text content events.
text
string
The text fragment to append to the message being built.
Example stream
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}

data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"CLAIM"}}

data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" NOW.\n\nAt 450 hCASH pending with"}}

data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" a 15 hCASH fee (3.3% cost), you"}}

data: [DONE]
Consuming the stream in JavaScript
const res = await fetch('/api/chat', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ messages }),
});

const reader = res.body.getReader();
const decoder = new TextDecoder('utf-8');
let assistantText = '';

while (true) {
  const { done, value } = await reader.read();
  if (done) break;

  const chunk = decoder.decode(value, { stream: true });
  for (const line of chunk.split('\n')) {
    if (!line.startsWith('data: ')) continue;
    const dataStr = line.slice(6);
    if (dataStr === '[DONE]') break;

    const event = JSON.parse(dataStr);
    if (event.type === 'content_block_delta' && event.delta?.type === 'text_delta') {
      assistantText += event.delta.text;
    }
  }
}
Error response If the API key is missing or the Anthropic API returns an error, the endpoint returns JSON (not a stream):
{
  "error": "API configuration missing. Please set ANTHROPIC_API_KEY.",
  "details": {}
}
The HTTP status mirrors the upstream error status, or 500 for configuration failures.

Build docs developers (and LLMs) love