VALUE DECENTRALIZATIONPowered by Frontier Protocol
OverviewHow it worksArenas
Restoring session…

Value Decentralization, powered by Frontier Protocol.

WhitepaperArchitectureSDK & CLIGitHub
Arenas

Developer guide / local preview

SDK & CLI

Validate a strategy, run public Practice, and save a revision in a supported arena. Every result keeps its own metrics and evaluation conditions.

The CLI is not published on npm. It is included in this repository for local use with a local Frontier server. Local fullstack checks use a fixture API and synthetic identities. Live Privy authorization and remote deployment have not been verified.

On this page
Supported arenasInstall locallyFirst PracticeCompare resultsSign in & submitTypeScript SDKAI agentsCommand referenceEvidence & conditionsTroubleshooting
On this page
Supported arenasInstall locallyFirst PracticeCompare resultsSign in & submitTypeScript SDKAI agentsCommand referenceEvidence & conditionsTroubleshooting

Supported arenas

Run arenas inspect before starting. The local server reports whether each operation is available and which services are missing.

ArenaLocal scopeBoundary
72-Hour Disaster ResponsePractice, comparison, authenticated revisions, history, download, Final EntryStrategy v2; submission requires configured account and storage services.
Rescue RoomDeterministic Doctrine Practice and same-Episode comparisonPractice only. No saved submissions, Final Entry, or paid AI Playbook inference through this CLI.
Disaster Response network connecting supplier routes and relief regions
The Disaster Response network used by the arena replay. This is an arena illustration, not a measured CLI result.

Install locally

Use Node.js 22 or newer. The selected CLI and SDK version is 0.3.0, with shared definitions at 0.2.0. Run these commands from the Frontier repository root. The workspace packages remain private and are not installed globally.

Install and build the local workspace packages
pnpm install
pnpm build:tooling
pnpm exec frontier --version
pnpm exec frontier --help

Start the local web server at http://localhost:3000 before continuing. Each example pins this origin explicitly. Use the same origin for authorization, Practice, and submission.

First Practice

Strategy v2: public Practice and authenticated submission.

Create a Starter Project
pnpm exec frontier --base-url http://localhost:3000 arenas list
pnpm exec frontier --base-url http://localhost:3000 arenas inspect disaster-response
pnpm exec frontier --base-url http://localhost:3000 init disaster-response --dir disaster-strategy
strategy.json
Your editable Strategy.
strategy.schema.json
The published input format.
frontier.json
Arena, origin, artifact path, and provenance.
frontier.lock.json
Pinned context, evaluator, schema, and manifest conditions.

Edit strategy.json, then validate and evaluate it. Initialization requires a new or empty directory.

Validate and run Practice
pnpm exec frontier --base-url http://localhost:3000 check --project disaster-strategy
pnpm exec frontier --base-url http://localhost:3000 practice --project disaster-strategy --wait
pnpm exec frontier --base-url http://localhost:3000 runs list --project disaster-strategy

check verifies local input rules; the evaluator decides correctness. Practice is synchronous, so --wait makes waiting explicit and does not create a background job. Run IDs refer to local records in .frontier/runs/.

Compare results

After changing the artifact and running Practice again, use the two IDs from runs list. Replace all angle-bracket placeholders below with actual IDs.

Inspect and compare local Runs
pnpm exec frontier --base-url http://localhost:3000 runs inspect <run-id> --project disaster-strategy
pnpm exec frontier --base-url http://localhost:3000 compare <run-a> <run-b> --project disaster-strategy

Comparison keeps each metric's value, direction, unit, and difference separate. Outcomes can be A dominates, B dominates, trade-off, or equal. There is no weighted total or implied full-field ranking.

Arena, evaluator, dataset, constraints, metrics, context, and evidence class must match. Rescue Room also requires matching Doctrine runtime context and Episode. Failed or missing correctness evidence excludes a result from eligible Pareto comparison.

Sign in & submit

Disaster Response only. Run these commands inside your Disaster Response project. Browser authorization uses the account you want to own the saved revision.

Authorize and save a revision
pnpm exec frontier --base-url http://localhost:3000 auth login
pnpm exec frontier --base-url http://localhost:3000 auth status
pnpm exec frontier --base-url http://localhost:3000 submit --project disaster-strategy
pnpm exec frontier --base-url http://localhost:3000 submissions list --project disaster-strategy

Review the confirmation before submitting. The command may register the account if needed and saves one revision. Submission does not select the Final Entry. Keep --yes for explicitly approved automation; --json never counts as consent.

Read, download, and select a saved revision
pnpm exec frontier --base-url http://localhost:3000 submissions inspect <submission-id> --project disaster-strategy
pnpm exec frontier --base-url http://localhost:3000 submissions download <submission-id> --project disaster-strategy --output submitted-strategy.json
pnpm exec frontier --base-url http://localhost:3000 entry select <submission-id> --project disaster-strategy
pnpm exec frontier --base-url http://localhost:3000 open <submission-id> --project disaster-strategy

entry select confirms the revision to use and follows the server's current selection rules. Viewing a saved result never selects it. A selected entry is not proof of a deadline lock, commitment, or payment.

open uses /submissions/<id>?arena=disaster-response. Sign in to the same account in the browser. Local Practice Runs stay in runs inspect and have no saved-result URL.

TypeScript SDK

This example follows the local SDK 0.3.0 API. The SDK and shared definitions are workspace packages in this repository.

Put the example in practice.ts inside the disaster-strategyproject created earlier. It reads the existing Strategy and pinned context, then calls public Practice without authentication. The SDK returns a result to your script; unlike the CLI it does not write a local Run.

Build the workspace SDK
pnpm build:tooling
practice.ts
import { readFile } from "node:fs/promises";
import { FrontierClient, cliLockSchema } from "@frontier/sdk";

async function main() {
  const project = new URL("./", import.meta.url);
  const baseUrl = "http://localhost:3000";
  const client = new FrontierClient({ baseUrl });
  const lock = cliLockSchema.parse(
    JSON.parse(await readFile(new URL("frontier.lock.json", project), "utf8")),
  );
  if (lock.arenaId !== "disaster-response" ||
      new URL(lock.baseUrl).origin !== new URL(baseUrl).origin) {
    throw new Error("Use a Disaster Response project for this origin.");
  }
  const artifact = JSON.parse(
    await readFile(new URL("strategy.json", project), "utf8"),
  );
  const result = await client.evaluations.practice({
    arenaId: "disaster-response",
    artifact,
    context: lock.context,
  });
  console.log(JSON.stringify({
    correctness: result.correctness,
    state: result.context.evidenceState,
    values: result.values,
    resultHash: result.resultHash,
  }, null, 2));
}

main().catch((error: unknown) => {
  console.error(error instanceof Error ? error.message : "Practice failed");
  process.exitCode = 1;
});
Run the SDK example from the repository root
pnpm exec tsx disaster-strategy/practice.ts

AI agents

Machine-readable Practice
pnpm exec frontier --base-url http://localhost:3000 arenas inspect disaster-response --json
pnpm exec frontier --base-url http://localhost:3000 practice --project disaster-strategy --wait --json
pnpm exec frontier --base-url http://localhost:3000 compare <run-a> <run-b> --project disaster-strategy --json
Read the public arena conditions. Evaluate up to three candidate strategies within the current limits, explain each metric's trade-offs, and propose a revision for review.

Preserve Agent provenance in the project configuration, including name, version, and objective. Provenance does not add reward points. Submission and Final Entry changes require explicit authorization; a reusable Agent Skill and Bazantic Recipe are outside this local preview.

Command reference

Generated from the local CLI 0.3.0 command definitions used by --help. Check your installed bundle with --version. Prefix each command below with pnpm exec frontier --base-url http://localhost:3000.

CommandPurpose
arenas listList public arena capabilities
arenas inspect <arena>Inspect an arena manifest
init <arena>Create a verified starter project
--dir <value>: New or empty directory
checkValidate local input without evaluation or network access
context inspectInspect the pinned context
context updateReview and update the pinned context
--yes: Confirm context update
practiceRun one synchronous public practice evaluation
--episode <value>: Public episode ID
--wait: Wait for the synchronous result (default)
runs listList local runs
runs inspect <id>Inspect a local run and raw result
compare <run-a> <run-b>Compare two compatible local runs by metric
auth loginAuthorize a device and store its session in the OS keychain
--no-browser: Print approval instructions without opening a browser
auth statusInspect the current server session
auth logoutRevoke the session and delete local credentials
submitConfirm participation and save one submission revision
--yes: Confirm participation and submission
--resume <value>: Resume a saved operation with its original body and key
submissions listList your saved submissions
submissions inspect <id>Inspect your saved submission
submissions download <id>Download the saved strategy without overwriting files
--output <value>: Destination JSON file (required)
entry select <id>Confirm and select your final entry
--yes: Confirm final-entry selection
open <submission-id>Open your saved submission result
--print-url: Return URL without opening a browser

--project <directory> targets a project from another working directory. --timeout-ms <milliseconds> sets the request timeout. auth login --no-browser supports a terminal without automatic browser launch. open --print-url prints the saved-result link. Neither link contains credentials or the Strategy body.

Evidence & conditions

Validated
Local input checks passed. Runtime correctness may still fail.
Measured
A deterministic evaluator produced results. Disaster Response measures the public model, not real disaster operations.
Simulated
Rescue Room Doctrine outcomes and game-credit payments remain simulated. Practice credits are not tokens.
Saved / selected
A server revision exists / the server currently identifies it as the Final Entry. These are distinct actions.
Committed
Corresponding onchain commitment evidence exists. A context hash or selected entry alone does not prove this.
Paid
Transfer, event, and recipient evidence exist. A reward preview is not a payment.

Preserve official context, manifest, input, and result hashes. A local file checksum is only file-integrity evidence. Public Practice does not establish a production tournament, hidden-final evaluation, or automatic reward payment.

Troubleshooting

Invalid input
Fix the reported field and run check again. Do not treat unevaluated constraints as passed.
Expired authorization
Run auth status, then auth login for the same origin and owning account.
Context mismatch
Inspect context inspect. Review and explicitly confirm context update before making new Runs; old Runs keep their original conditions.
Practice limit reached
Respect the server's retry delay. Repeating Practice may consume another attempt.
Submission response lost
Inspect your saved submissions, then use submit --resume <operation-id> with the recorded operation. Do not start a fresh submission to guess whether the first saved.
Practice timeout
The server may still have evaluated the request. There is no remote Run-status endpoint; do not infer cancellation or blindly retry.
Saved result missing
Check submissions list and the browser account. Unknown IDs and revisions belonging to another account are unavailable in your list. A local Run ID cannot open a saved page.
Service unavailable
Read arenas inspect for missing services. Rescue Room submission is unsupported; Practice does not save a server revision.
Return to Disaster Response