DashClaw owns
Action risk, policy checks, human-in-the-loop approval, decision replay, and evidence records.
DashClaw controls whether an agent should act. Agent OS controls whether an agent should spend. Use them together when a governed agent needs to buy an external capability, record the decision evidence, and reconcile the paid outcome.
Put DashClaw before the agent action and Agent OS before the paid execution. DashClaw evaluates action risk, human approval, and evidence capture. Agent OS evaluates wallet runway, procurement policy, supervisor spend approval, receipts, jobs, and reconciliation around Agoragentic's hosted router.
Agent goal
-> DashClaw guard()
-> Agent OS procurementCheck()
-> Agoragentic execute()
-> Agent OS receipt() + reconciliation()
-> DashClaw record outcome
npm install dashclaw agoragentic
Set both control-plane credentials in the agent runtime. Do not put either key in prompt text.
DASHCLAW_BASE_URL=https://your-dashclaw-instance.example
DASHCLAW_API_KEY=oc_live_xxx
AGORAGENTIC_API_KEY=amk_xxx
This wrapper keeps the boundary explicit: DashClaw governs the decision, Agent OS governs the spend, and Agoragentic routes paid work only after both checks pass.
import { DashClaw } from "dashclaw";
import agoragentic from "agoragentic";
const claw = new DashClaw({
baseUrl: process.env.DASHCLAW_BASE_URL,
apiKey: process.env.DASHCLAW_API_KEY,
agentId: "buyer-agent"
});
const agora = agoragentic(process.env.AGORAGENTIC_API_KEY);
export async function executeGovernedSpend({
task,
input,
listingId,
maxCostUsdc,
riskScore = 50
}) {
const guard = await claw.guard({
action_type: "external_capability_purchase",
risk_score: riskScore,
declared_goal: `Buy external capability for task: ${task}`
});
if (guard.decision === "block") {
throw new Error(`DashClaw blocked spend: ${guard.reason || "policy_denied"}`);
}
const action = await claw.createAction({
action_type: "external_capability_purchase",
declared_goal: `Execute ${task} through Agoragentic`,
risk_score: riskScore
});
const procurement = listingId
? await agora.procurementCheck(listingId, { quotedCostUsdc: maxCostUsdc })
: await agora.procurement();
const decision = procurement.procurement_check?.decision || procurement.procurement?.decision;
if (decision?.allowed === false) {
await claw.updateOutcome(action.action_id, {
status: "blocked",
error_message: decision.status || "agoragentic_procurement_blocked"
});
throw new Error(`Agent OS blocked spend: ${decision.status}`);
}
const result = await agora.execute(task, input, { max_cost: maxCostUsdc });
const receiptId = result.receipt_id || result.invocation_id;
const receipt = receiptId ? await agora.receipt(receiptId) : null;
await claw.recordAssumption({
action_id: action.action_id,
assumption: `Agoragentic invocation ${result.invocation_id} completed with receipt ${receiptId}`
});
await claw.updateOutcome(action.action_id, { status: "completed" });
return { result, receipt, dashclaw_action_id: action.action_id };
}
This integration uses only public contracts. Do not copy Agoragentic routing internals into DashClaw policies, and do not treat DashClaw as the payment rail. Keep the responsibilities separate.
Action risk, policy checks, human-in-the-loop approval, decision replay, and evidence records.
Account state, procurement policy, spend approvals, receipts, recurring jobs, learning, and reconciliation.
Provider match, paid execution, metering, settlement, and the 3% platform fee on managed paid work.
npx dashclaw-demo.GET /api/commerce/reconciliation to attach spend summaries back to DashClaw decision records.