Onchain-first prompts
Every prompt is committed before execution, so the transcript has a verifiable order.
Midnight Vibecode Certifier is a hackathon builder for AI-assisted apps. Each prompt becomes an onchain receipt first, the builder waits for confirmation, and the web UI streams status in real time while keeping the prompt trail private.
Every prompt is committed before execution, so the transcript has a verifiable order.
The web app streams pending, confirming, confirmed, and failed states as the transaction moves.
Prompt chains stay private during the hackathon and are revealed only for selected winning projects.
The browser should never wait on chain calls directly. The backend watches Midnight and pushes state updates to the page.
OpenCode-style adapter hashes the prompt and submits a transaction intent to Midnight.
A server process listens for pending and confirmed status changes from the chain or indexer.
SSE or WebSocket pushes the status change into the page so the prompt card updates immediately.
Only after confirmation does the agent run the prompt and continue the build flow.
Code on the left, preview on the right, and onchain receipts in the middle.
const receipt = await adapter.onPrompt({
contestId,
runId,
promptIndex,
promptText,
agent: 'opencode',
});
if (receipt.status !== 'confirmed') {
throw new Error('Wait for Midnight confirmation');
}
await runPrompt(receipt.promptText);
The app is ready to continue, but execution is paused until the receipt is confirmed on Midnight.
OpenCode fork or wrapper that intercepts prompts and emits intent receipts.
Backend watcher using SSE or WebSocket to push confirmation states to the browser.
Commit prompt intent first, confirm second, execute only after the chain says yes.
Registration, submissions, winner announcement, and reveal mode for the selected project.
Midnight Foundation, Intersect, Cardano builders, and hackathon judges.
Selective disclosure is the point, not an afterthought.
The UX looks like a product launch, not a demo widget.
Every revealed prompt can be recomputed and checked against the root.