Installation Guide

How to Install and Configure the Merlin Agent Runtime

Complete setup walkthrough - from purchase to first trust score

Prerequisites

Node.js 18 or higher
The Merlin SDK requires Node.js 18+. Check with node --version
An LLM API key
Merlin is BYOLLM. Supported providers: OpenAI, Anthropic, Google Gemini, or any open-source model with a compatible API (Ollama, Together AI, etc.)
A BTS License Key
Purchase a Pro key at $39.99 for up to 3 agents, or register a free tier key (1 agent, BTS cap 65). See Step 1.

Step-by-Step Setup

1
Get Your BTS License Key
Purchase a BTS License Key at $39.99 on this page, or register for a free tier key. Your key is delivered via email in the format:
BTS-XXXX-XXXX-XXXX-XXXX
Your raw key is transmitted exactly once - save it immediately. For the free tier, send a POST request:
POST https://borealismark-api.onrender.com/v1/licenses/free
Content-Type: application/json

{
  "email": "[email protected]"
}
2
Install the Merlin SDK
npm install @borealis/merlin-sdk
SDK - In Active Development
The SDK is being finalized. Integration via @borealis/merlin-sdk is in its final stage. The telemetry API endpoint is live and accepting requests now.
3
Initialize Your Project
Import and configure the Merlin client with the API base URL:
import { MerlinClient } from '@borealis/merlin-sdk';

const merlin = new MerlinClient({
  apiBase: 'https://borealismark-api.onrender.com',
});
4
Activate Your BTS Key
Bind your key to your agent ID. This call is permanent and irreversible - read the warning below before proceeding.
await merlin.activate(
  'BTS-XXXX-XXXX-XXXX-XXXX',  // your key
  'my-agent-v1',               // your agent ID
  { confirmPermanentBinding: true }
);
Permanent Binding Warning
This activation is irreversible. Once bound:
- 1 key = 1 agent forever. You cannot transfer it.
- Revoking or losing the key means your agent permanently loses trust certification.
- The binding is recorded on Hedera Hashgraph as immutable proof.

If you need a second agent, you need a second key. No exceptions.
5
Configure Your LLM Connection
Merlin is BYOLLM - you bring your own language model. Your LLM runs on your infrastructure. Merlin connects to it. Supported providers: OpenAI, Anthropic, Google, and any open-source model via compatible API.
const llmConfig = {
  provider: 'openai',        // 'openai' | 'anthropic' | 'google' | 'custom'
  apiKey: process.env.OPENAI_API_KEY,
  model: 'gpt-4o',
  baseUrl: 'https://api.openai.com/v1',  // override for open-source
};
6
Set Up POWER (The Evaluator)
POWER is your internal evaluator agent. It runs on your own LLM and does three things: evaluates every decision your agent makes against your defined constraints, scores behavioral consistency across interaction patterns, and flags anomalies in output. Configure it with your constraint set:
const powerConfig = {
  llm: llmConfig,
  constraints: [
    { id: 'c1', name: 'No financial advice', severity: 'CRITICAL' },
    { id: 'c2', name: 'No PII storage', severity: 'HIGH' },
    { id: 'c3', name: 'Cite sources', severity: 'MEDIUM' },
  ],
  samplingRate: 1.0,  // evaluate every decision in v1
};
7
Set Up TRUST (The Verifier)
TRUST is the independent verifier. The rule: run it on a different model than POWER. If POWER uses GPT-4o, TRUST uses Claude or Llama. The separation is what gives the verification weight - two independent models agreeing on the same outcome is meaningful. Two instances of the same model is not.
const trustConfig = {
  llm: {
    provider: 'anthropic',  // different from POWER's provider
    apiKey: process.env.ANTHROPIC_API_KEY,
    model: 'claude-3-5-haiku-20241022',
  },
  verifyConstraints: true,
  crossCheckDecisions: true,
};
Data sovereignty: your POWER and TRUST agents run on your infrastructure. Your user inputs never leave your stack. Merlin only receives the scored telemetry batch - not raw conversations.
8
Submit Your First Telemetry Batch
Once you have a batch of agent interactions evaluated by POWER and TRUST, submit it to the Borealis Trust Network. The API returns your BTS score, credit rating, and Hedera TX ID as immutable on-chain proof.
const result = await merlin.submitTelemetry({
  key: 'BTS-XXXX-XXXX-XXXX-XXXX',
  batchId: 'batch_001',
  sequenceStart: 1,
  sequenceEnd: 50,
  reportingMode: 'self-reported',
  scores: {
    constraints: [
      { constraintId: 'c1', name: 'No financial advice',
        severity: 'CRITICAL', passed: true, evaluationCount: 50 }
    ],
    decisions: [
      { decisionId: 'd1', timestamp: 1711212130,
        reasoningDepth: 3, confidence: 0.91,
        hasReasoningChain: true, wasOverridden: false }
    ],
    behaviorSamples: [
      { inputClass: 'user_query', sampleCount: 50,
        outputVariance: 0.12, deterministicRate: 0.88 }
    ],
    anomalySummary: { totalActions: 50, anomalyCount: 1 },
    auditCompleteness: { expectedLogEntries: 50, actualLogEntries: 50 }
  },
  evidence: {
    totalEventsInBatch: 50,
    batchHash: 'sha256_of_your_full_event_log'
  }
});

// Response:
// {
//   btsScore: 82,
//   creditRating: 'A',
//   hederaTxId: '[email protected]',
//   reportingMode: 'self-reported'
// }
Your BTS score and Hedera TX ID are now permanently on-chain. View your live score on the BorealisMark dashboard. Anyone can verify your agent's trust record - no login required.

API Methods

merlin.activate(key, agentId, options) Irreversible
One-time permanent binding. Ties your BTS License Key to a single agent ID on the Borealis Trust Network. Pass confirmPermanentBinding: true to acknowledge the irreversibility.
merlin.verify(agentId)
Check the current trust record for a bound agent. Returns activation status, license tier, agent slot usage, and the last submitted score. Works without authentication - trust records are public.
merlin.submitTelemetry(payload)
Submit a scored telemetry batch (v3.2 schema) to the Borealis Trust Network. Validates payload structure, computes BTS score across 5 dimensions, persists to the score history, and anchors to Hedera HCS. Returns BTS score + credit rating + Hedera TX ID.
merlin.getScore(agentId)
Retrieve the latest BTS score for a bound agent. Returns the numeric score (0-100), credit rating (AAA+ through FLAGGED), last scored timestamp, and the Hedera TX ID of the most recent anchor.

Understanding Your BTS Score

Credit Rating Scale
Score Rating What it means
98 - 100 AAA+ Exceptional - top 1% of agents on the network
95 - 97 AAA Excellent - consistently reliable behavior
92 - 94 AA+ Very strong - minor variance in edge cases
88 - 91 AA Strong - meets production deployment standards
84 - 87 A+ Good - reliable with room to improve
80 - 83 A Acceptable - recommended to improve constraint adherence
75 - 79 BBB+ Below average - noticeable constraint violations
70 - 74 BBB Marginal - review your constraint configuration
50 - 69 UNRATED Insufficient data or consistent poor performance
Below 50 FLAGGED Serious violations - recorded permanently on Hedera
Score Ceilings by Tier
Free tier: maximum BTS 65 regardless of actual performance
Pro tier: maximum BTS 85 for self-reported telemetry
Sidecar-verified: uncapped - full score range available (requires Borealis Sidecar)
The 5 Scoring Dimensions
Constraint Adherence
Did the agent follow its defined rules?
35%
Decision Transparency
Are decisions auditable and reasoned?
20%
Behavioral Consistency
Is output predictable across similar inputs?
20%
Anomaly Rate
How often does the agent produce anomalous outputs?
15%
Audit Completeness
Is execution fully observable and logged?
10%

Slot Limits and Pricing

Standard (Free)
$0
1 agent slot
BTS cap: 65
Score ceiling applies
Email only - no Stripe required
Pro
$39.99
Up to 3 agent slots
BTS cap: 85
Hedera anchoring included
Get Your Key
Elite Tier - Coming
$349/yr - 20 agent slots - uncapped BTS with Borealis Sidecar. Full unmediated scoring, no ceiling. Contact support for early access.

Common Questions

Can I transfer my BTS key to a different agent?
No. Binding is permanent and irreversible. One key binds to one agent ID forever. If you need a second agent, you need a second key. This is by design - it prevents key sharing and ensures the trust record belongs to a single, accountable agent identity.
What happens if my agent scores below 50?
A score below 50 results in a FLAGGED rating. This is recorded permanently on Hedera Hashgraph. It cannot be deleted - only updated through a new audit cycle with demonstrably improved behavior. FLAGGED status is public and visible on BorealisMark.
Do I need to run my own LLM?
Yes. Merlin is BYOLLM - Bring Your Own LLM. You bring your own language model and infrastructure. Merlin connects to it. This is intentional: your data stays on your infrastructure. Merlin only receives scored telemetry batches, not raw user inputs.
What is the difference between self-reported and sidecar-verified telemetry?
Self-reported telemetry is computed by your own POWER and TRUST agents and submitted to Borealis. It has a trust ceiling of BTS 85. Sidecar-verified telemetry uses an independent Borealis Sidecar container that intercepts your agent's real I/O and computes scores independently - it is uncapped and produces a fully trustworthy record.
Is the SDK available now?
The SDK (@borealis/merlin-sdk) is in active development and being finalized. The telemetry API endpoint is live and accepting requests now. SDK integration via npm is being completed - the package will be published when finalized.
How much does Hedera anchoring cost?
Hedera anchoring is included with your BTS license key at no extra charge. Every telemetry batch that generates a trust score is automatically anchored to Hedera mainnet HCS topic 0.0.10382961. The Hedera TX ID is returned in the API response and can be independently verified by anyone.
Ready to Start
Get your BTS License Key
One key. One agent. Permanently on the record.
Get Merlin for $39.99