Local Board

Standalone development server that runs the full consensus-tools stack on port 9888.

Overview

@consensus-tools/local-board runs the entire consensus-tools stack as a single local API server on port 9888. It bundles every core engine -- jobs, ledger, guards, workflows, credentials, and human-in-the-loop tracking -- in one process with zero external dependencies. Use it for local development, testing, and demos.

All-in-one development server

Local Board is the fastest way to get a running consensus-tools API. No database setup, no configuration files. Start the server and hit the endpoints.

Quick start

# From the consensus-tools monorepo root
pnpm install
pnpm --filter @consensus-tools/local-board dev

The server starts at http://127.0.0.1:9888. All REST endpoints from @consensus-tools/sdk-node are available immediately.

Bundled engines

EnginePurpose
JobEngineJob lifecycle -- create, submit, finalize, expire
LedgerEngineAgent credit balances, faucet, payouts
GuardEngineDeterministic guard evaluation pipeline
HitlTrackerHuman-in-the-loop approval tracking
WorkflowRunnerDAG-based workflow execution with checkpoint storage
PolicyResolverAll 9 built-in consensus policies
CredentialManagerEncrypted credential storage (OS keychain)
ConsensusToolsServerHTTP server exposing all engines as REST endpoints

Default configuration

SettingValue
Host127.0.0.1
Port9888
StorageJSON file at .data/consensus.json
Default reward10 credits
Default stake1 credit
Max participants3
Expiry86400 seconds (24 hours)
Consensus policyFIRST_SUBMISSION_WINS
SlashingDisabled
FaucetEnabled, 100 initial credits per agent

Scripts

pnpm --filter @consensus-tools/local-board dev        # Start with tsx (hot reload)
pnpm --filter @consensus-tools/local-board build      # Compile to dist/
pnpm --filter @consensus-tools/local-board typecheck   # Type-check without emit

Storage

All state persists to .data/consensus.json in the app directory. Delete this file to reset all jobs, balances, and workflow checkpoints.

Examples

Pair with sdk-client

import { ConsensusToolsClient } from "@consensus-tools/sdk-client";

const client = new ConsensusToolsClient({
  baseUrl: "http://127.0.0.1:9888",
  accessToken: "",
});

const job = await client.postJob("dev-agent", {
  title: "Test job",
  description: "Verify local board is running",
  reward: 10,
});

Pair with MCP

Point the MCP server at local-board by setting the storage path, or use global mode from the OpenClaw plugin:

{
  "mcpServers": {
    "consensus-tools": {
      "command": "npx",
      "args": ["@consensus-tools/mcp"],
      "env": {
        "CONSENSUS_STORAGE_PATH": "/path/to/local-board/.data/consensus.json"
      }
    }
  }
}

API reference

Local Board exposes the same REST API as SDK Node. See that page for the full endpoint table covering jobs, submissions, ledger, guards, workflows, and credentials.

  • SDK Node -- The HTTP server library that Local Board builds on
  • SDK Client -- HTTP client for talking to this server
  • MCP -- MCP adapter that can share the same storage file