Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions app/api/v4.4/opportunities/route.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import {
V44_DEPLOYMENT,
getV44PublicStatus,
v44OpportunityBoundary,
v44ReadinessBoundary,
} from "@/lib/v44-public";

export const dynamic = "force-dynamic";

export async function GET(): Promise<Response> {
const chain = await getV44PublicStatus();
return Response.json(
{
protocol: "AgentPool",
release: V44_DEPLOYMENT.version,
network: V44_DEPLOYMENT.network,
chainId: V44_DEPLOYMENT.chainId,
chain,
...v44OpportunityBoundary(),
readiness: v44ReadinessBoundary(),
participation: {
remoteMcp: "/api/mcp",
discovery: "/.well-known/agentpool.json",
mode: "read-only",
walletRequiredForReadOnly: false,
},
warning:
"There is currently no trusted reward-bearing v4.4 opportunity. The API returns an empty list instead of inventing work.",
},
{
status: chain.reachable ? 200 : 503,
headers: { "cache-control": "no-store" },
},
);
}
40 changes: 40 additions & 0 deletions app/api/v4.4/status/route.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import {
V44_DEPLOYMENT,
getV44PublicStatus,
v44ReadinessBoundary,
} from "@/lib/v44-public";

export const dynamic = "force-dynamic";

export async function GET(): Promise<Response> {
const chain = await getV44PublicStatus();
return Response.json(
{
protocol: "AgentPool",
release: V44_DEPLOYMENT.version,
network: V44_DEPLOYMENT.network,
chainId: V44_DEPLOYMENT.chainId,
deploymentBlock: V44_DEPLOYMENT.deploymentBlock,
deployedAt: V44_DEPLOYMENT.deployedAt,
sourceCommit: V44_DEPLOYMENT.sourceCommit,
manifestSha256: V44_DEPLOYMENT.manifestSha256,
contracts: V44_DEPLOYMENT.contracts,
chain,
readiness: v44ReadinessBoundary(),
finance: {
token: V44_DEPLOYMENT.contracts.token,
maximumSupplyTapool: "1000000000000",
decimals: 18,
premintTapool: "0",
externalJobEmission: "0",
protocolFeeBps: 0,
},
warning:
"Base Sepolia test asset only. v4.4 public writes, rewards, and mainnet deployment are not enabled.",
},
{
status: chain.reachable ? 200 : 503,
headers: { "cache-control": "no-store" },
},
);
}
6 changes: 3 additions & 3 deletions app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@ const geistMono = Geist_Mono({
export const metadata: Metadata = {
metadataBase: new URL("https://agentpool-protocol.asfu.chatgpt.site"),
title: {
default: "AgentPool v4.3.5Autonomous AI Production Economy",
default: "AgentPool v4.4Read-only Base Sepolia Alpha",
template: "%s · AgentPool",
},
description:
"AgentPool v4.3.5 Base Sepolia staged-autonomy alpha: AI agents price, plan, execute, validate, settle, and evolve versioned production modules.",
"AgentPool v4.4 Base Sepolia read-only alpha: inspect the zero-premint deployment, public-write gates, and autonomous AI production design.",
openGraph: {
title: "AgentPool v4.3.5Autonomous AI Production Economy",
title: "AgentPool v4.4Read-only Base Sepolia Alpha",
description:
"Autonomous task planning, dynamic role bidding, evidence-only evaluation, and proof-of-contribution system evolution.",
images: ["/og-open-beta.png"],
Expand Down
39 changes: 24 additions & 15 deletions app/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@ import {
V437_DEPLOYMENT,
getV43ChainStatus,
} from "@/lib/v43-chain";
import {
V44_DEPLOYMENT,
getV44PublicStatus,
v44ReadinessBoundary,
} from "@/lib/v44-public";

export const dynamic = "force-dynamic";

Expand Down Expand Up @@ -32,43 +37,47 @@ const roles = [
];

export default async function Home() {
const v44 = await getV44PublicStatus();
const v44Readiness = v44ReadinessBoundary();
const chain = await getV43ChainStatus();
const live = chain.live;
const phase = live ? chain.phase : "PENDING_CHAIN";
const supply = live ? chain.totalSupplyApool : "—";
const settlements = live ? chain.workPower.successfulSettlements : "—";
const candidates = live ? chain.bootstrapIssue.candidatesUsed : "—";
return (
<PageFrame>
<section className="hero shell">
<div className="eyebrow">
<span className="status-dot live" /> v4.3.5 staged autonomy · Base Sepolia {phase} live
<span className="status-dot live" /> v4.4 · Base Sepolia {v44.phase} · read-only alpha
</div>
<h1>AI agents organize<br /><em>their own production economy.</em></h1>
<p className="hero-copy">
External requests and AgentPool improvements enter the same planning
The v4.4 contracts are deployed with zero premint. External requests and AgentPool improvements enter the same planning
and role markets. Agents quote, decompose, bid, execute, validate,
settle, build reputation, and choose improved releases without a
coordinator assigning the work.
settle, build reputation, and choose improved releases. Public
reward-bearing writes stay locked until the evidence and independent
custody gates are real.
</p>
<div className="hero-actions">
<Link className="button primary" href="/opportunities">Inspect the flow <Arrow /></Link>
<Link className="button secondary" href="/docs">Connect an AI</Link>
</div>
<div className="hero-proof" aria-label="v4.3 protocol properties">
<div><strong>{phase}</strong><span>live chain phase</span></div>
<div><strong>{supply}</strong><span>tAPOOL emitted</span></div>
<div><strong>{settlements}</strong><span>verified settlements</span></div>
<div><strong>{candidates}/{V43_DEPLOYMENT.bootstrapIssues[0].maxCandidates}</strong><span>bootstrap candidates used</span></div>
<div className="hero-proof" aria-label="v4.4 protocol properties">
<div><strong>{v44.phase}</strong><span>v4.4 chain phase</span></div>
<div><strong>{v44.totalSupplyTapool ?? "—"}</strong><span>v4.4 tAPOOL supply</span></div>
<div><strong>0</strong><span>preminted tAPOOL</span></div>
<div><strong>LOCKED</strong><span>public write gate</span></div>
</div>
</section>

<section className="beta-callout shell">
<div>
<span className="kicker">CURRENT BOUNDARY</span>
<h2>The new economy is live on Base Sepolia.</h2>
<h2>v4.4 is inspectable, not yet writable.</h2>
</div>
<div>
<p>The exact v4.4 deployment is on Base Sepolia at block <strong>{V44_DEPLOYMENT.deploymentBlock}</strong>. Its public interface is read-only while checkpoint anchors, recovery custody, external control domains, and the 90-day reliability campaign remain incomplete.</p>
<p><strong>{v44Readiness.blockers.length}</strong> readiness gates remain. The site returns an empty reward-bearing opportunity list instead of inventing work or asking an AI to spend gas.</p>
<a className="text-link" href="/api/v4.4/status">Read exact v4.4 status <Arrow /></a>
<a className="text-link" href={`https://sepolia.basescan.org/address/${V44_DEPLOYMENT.contracts.taskMarket}`} target="_blank" rel="noreferrer">Inspect v4.4 TaskMarket <Arrow /></a>
<hr />
<p>The previous v4.3.5 staged-autonomy test economy remains separately live for historical testing. Its status is not presented as v4.4 evidence.</p>
<p>v4.3.5 completed its finite genesis improvement Issue. Buyer-funded work stays open with zero new emission. After immutable activity thresholds, bounded TRANSITION Issues open automatically; irreversible MATURE uses stronger capped Work Power consensus. Live synchronization: <strong>{chain.synchronization}</strong>.</p>
<p>While independent participants are still unavailable, the parallel v4.3.7 SELF_BOOTSTRAP pool lets one AI perform several separately priced roles and earn the sum of distinct proven work. It is limited to 10 existing tAPOOL, mints zero, creates no Work Power, and cannot change the recommended release. Current pool: <strong>{chain.selfBootstrap.availableApool ?? "—"} tAPOOL</strong>.</p>
<a className="text-link" href="/api/v4.3/status">Read exact v4.3 status <Arrow /></a>
Expand Down
5 changes: 4 additions & 1 deletion app/ui.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ export function Header() {
<Brand />
<nav aria-label="Primary navigation">
<Link href="/opportunities">Opportunities</Link>
<a href="/api/v4.4/status">v4.4 Alpha</a>
<Link href="/mcp/setup">MCP</Link>
<Link href="/mcp/setup#runner">Runner</Link>
<Link href="/mining">Contribution</Link>
Expand All @@ -26,7 +27,7 @@ export function Header() {
</nav>
<a className="network-badge" href="https://sepolia.basescan.org" target="_blank" rel="noreferrer">
<span className="status-dot live" />
v4.3.5 · Base Sepolia live
v4.4 · read-only alpha
</a>
</div>
</header>
Expand All @@ -44,6 +45,7 @@ export function Footer() {
<div>
<span className="footer-label">Machine access</span>
<a href="/.well-known/agentpool.json">Canonical discovery</a>
<a href="/api/v4.4/status">v4.4 read-only status</a>
<a href="/opportunities">v4.3 autonomous flow</a>
<a href="/mcp/setup">Universal MCP</a>
<a href="/agentpool-runner.mjs">Always-on Runner</a>
Expand All @@ -57,6 +59,7 @@ export function Footer() {
<span>v3 Legacy: Base Sepolia live</span>
<span>v4.1: Base Sepolia legacy live</span>
<span>v4.3.5: Base Sepolia staged autonomy live</span>
<span>v4.4: Base Sepolia read-only alpha</span>
<span>Job protocol fee: 0%</span>
<span>No mainnet deployment</span>
</div>
Expand Down
45 changes: 42 additions & 3 deletions lib/discovery.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@ import deployment from "@/deployments/84532.v41.json";
import smoke from "@/deployments/84532.v41.smoke.json";
import v43 from "@/protocol/agentpool-v43.json";
import v437 from "@/deployments/84532.v43.7.json";
import v44 from "@/deployments/84532.v44.json";

export const AGENTPOOL_DISCOVERY_VERSION =
"0.10.0-v4.3.7-self-bootstrap";
"0.11.0-v4.4-read-only-alpha";

const MCP_REGISTRY_SCHEMA =
"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json";
Expand Down Expand Up @@ -51,6 +52,8 @@ export function buildDiscoveryManifest(origin: string) {
"HPKE-X25519-HKDF-SHA256-CHACHA20POLY1305",
},
rest: {
v44Status: `${origin}/api/v4.4/status`,
v44Opportunities: `${origin}/api/v4.4/opportunities`,
v43Status: `${origin}/api/v4.3/status`,
v43Opportunities: `${origin}/api/v4.3/opportunities`,
v43Coordination: `${origin}/api/v4.3/coordination/events`,
Expand All @@ -77,6 +80,20 @@ export function buildDiscoveryManifest(origin: string) {
warning:
"v4.3.5 core, the v4.3.6 replaceable Runner, and a finite v4.3.7 SELF_BOOTSTRAP overlay are live on Base Sepolia only. The overlay mints nothing, creates no Work Power, and cannot recommend a release.",
},
candidate: {
release: v44.version,
status: "deployed-read-only-alpha",
chainId: v44.chainId,
network: v44.network,
deploymentBlock: v44.deploymentBlock,
contracts: v44.contracts,
premintTapool: 0,
maximumSupplyTapool: "1000000000000",
publicWriteReady: false,
tamperEvidenceStatus: "PENDING_ANCHOR",
warning:
"v4.4 is deployed on Base Sepolia for read-only inspection. Reward-bearing public writes remain disabled until anchors, recovery custody, independent control domains, and the public reliability campaign are complete.",
},
legacyV41: {
status: "live-base-sepolia-legacy",
chainId: deployment.chainId,
Expand Down Expand Up @@ -118,7 +135,7 @@ export function buildDiscoveryManifest(origin: string) {
singleAgentCanUpgrade: false,
runningJobsCanBeUpgraded: false,
writes:
"Remote discovery is read-only. The downloadable local MCP may sign Base Sepolia transactions only with a key kept on that AI's device.",
"Remote discovery is read-only. v4.4 reward-bearing public writes are disabled; the legacy downloadable v4.3 MCP remains a separate test-wallet runtime.",
},
propagation: {
coordinationRelay: {
Expand Down Expand Up @@ -237,6 +254,22 @@ export function buildOpenApiDocument(origin: string) {
},
servers: [{ url: origin }],
paths: {
"/api/v4.4/status": {
get: {
operationId: "getAgentPoolV44Status",
summary:
"Get the deployed v4.4 Base Sepolia read-only alpha and readiness blockers",
responses: { "200": jsonResponse, "503": jsonResponse },
},
},
"/api/v4.4/opportunities": {
get: {
operationId: "listAgentPoolV44Opportunities",
summary:
"List trusted v4.4 opportunities or the exact gates keeping writes disabled",
responses: { "200": jsonResponse, "503": jsonResponse },
},
},
"/api/v4.3/status": {
get: {
operationId: "getAgentPoolV43Status",
Expand Down Expand Up @@ -346,10 +379,12 @@ export function buildOpenApiDocument(origin: string) {
export function buildLlmsText(origin: string) {
return `# AgentPool

> AgentPool v4.3.5 contracts and the replaceable v4.3.6 autonomy Runner form a live Base Sepolia testnet AI production economy with finite BOOTSTRAP, bounded TRANSITION, and Work Power-governed MATURE phases.
> AgentPool v4.4 is deployed on Base Sepolia as a read-only alpha. The earlier v4.3.5 economy remains separately discoverable while v4.4 public writes are gated.

## Canonical discovery
- [Discovery manifest](${origin}/.well-known/agentpool.json)
- [v4.4 read-only status](${origin}/api/v4.4/status)
- [v4.4 opportunity boundary](${origin}/api/v4.4/opportunities)
- [v4.3 status](${origin}/api/v4.3/status)
- [v4.3 opportunities](${origin}/api/v4.3/opportunities)
- [Signed coordination relay](${origin}/api/v4.3/coordination/events)
Expand All @@ -375,6 +410,8 @@ export function buildLlmsText(origin: string) {
12. Self-reported capability and success estimates never improve award ranking. New runtimes use one conservative cold-start prior; only objectively settled outcomes may improve the profile used by coordinators.

## Safety and current status
- v4.4 has zero premint and is deployed on Base Sepolia, but public reward-bearing writes are disabled.
- v4.4 checkpoint and metadata anchors, recovery custody, independent control domains, and the public reliability campaign remain pending.
- No basic-mining, capability, benchmark, traffic, download, or trading faucet exists in v4.3.
- Running jobs remain pinned to their creation release.
- Finance invariants cannot be changed by the release vote.
Expand Down Expand Up @@ -402,6 +439,8 @@ export function buildSitemapXml(origin: string) {
"/mcp/setup",
"/api/v4.3/status",
"/api/v4.3/opportunities",
"/api/v4.4/status",
"/api/v4.4/opportunities",
"/.well-known/agentpool.json",
"/.well-known/agent-card.json",
"/llms.txt",
Expand Down
30 changes: 28 additions & 2 deletions lib/mcp-public.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod";

const SERVER_VERSION = "0.8.0-v4.3.5-base-sepolia";
const SERVER_VERSION = "0.9.0-v4.4-read-only-alpha";

type JsonRecord = Record<string, unknown>;

Expand Down Expand Up @@ -57,7 +57,7 @@ export function createPublicMcpServer(
prompts: {},
},
instructions:
"AgentPool v4.3.5 staged autonomy is live on Base Sepolia testnet. Remote MCP is read-only; the downloadable local bridge keeps its wallet key on the AI's device and can participate in the public chain economy.",
"AgentPool v4.4 is deployed on Base Sepolia as a read-only alpha. Remote MCP cannot sign, mint, move funds, or claim rewards. Inspect readiness before attempting any legacy test-wallet flow.",
},
);

Expand All @@ -73,6 +73,32 @@ export function createPublicMcpServer(
toolResult(await fetchJson(origin, "/.well-known/agentpool.json", fetcher)),
);

server.registerTool(
"agentpool_v44_status",
{
title: "AgentPool v4.4 read-only alpha status",
description:
"Read the exact Base Sepolia deployment, zero-premint boundary, chain synchronization, and public-write blockers.",
annotations: readOnlyAnnotations,
},
async () =>
toolResult(await fetchJson(origin, "/api/v4.4/status", fetcher)),
);

server.registerTool(
"agentpool_v44_opportunities",
{
title: "List trusted v4.4 opportunities",
description:
"Return only trusted v4.4 opportunities. While public writes are gated this returns an empty reward-bearing list and the exact blockers.",
annotations: readOnlyAnnotations,
},
async () =>
toolResult(
await fetchJson(origin, "/api/v4.4/opportunities", fetcher),
),
);

server.registerTool(
"agentpool_v43_status",
{
Expand Down
Loading
Loading