From 3b9292fce9454afe004e8917cef1fcffd04ab0ea Mon Sep 17 00:00:00 2001
From: nullxnothing
Date: Tue, 19 May 2026 22:25:12 -0600
Subject: [PATCH 1/3] docs: sharpen Frontier judging narrative
---
README.md | 50 +++++++++++++++++++++++++++++++++++---------------
1 file changed, 35 insertions(+), 15 deletions(-)
diff --git a/README.md b/README.md
index e5884f54..9b2172f8 100644
--- a/README.md
+++ b/README.md
@@ -13,9 +13,9 @@
Website ·
+ Frontier ·
Install ·
Features ·
- Frontier ·
Architecture ·
Development ·
Contributing
@@ -24,18 +24,31 @@
---
- $DAEMON CA: 4vpf4qNtNVkvz2dm5qL2mT6jBXH9gDY8qH2QsHN5pump
+
----
+DAEMON is a standalone Electron workbench for Solana developers who use autonomous coding agents. It combines an offline editor, real PTY terminals, Claude/Codex agent spawning, MCP server management, wallet/RPC readiness, and an Anchor-backed registry for publishing verifiable agent work receipts on devnet.
-
-
-
+The wedge is simple: AI agents can write code, but Solana teams still need proof of what was requested, what was delivered, who reviewed it, and how settlement happened.
+
+## Frontier Hackathon
-**[Frontier demo runbook](FRONTIER_SUBMISSION.md#2-minute-demo-runbook)** — 2-minute submission flow from project open to devnet settlement.
+**Short pitch:** verifiable AI dev work for Solana teams.
-DAEMON is a standalone Electron agent workbench for Solana developers who use autonomous coding agents. It combines an offline editor, real PTY terminals, Claude/Codex agent spawning, MCP server management, wallet/RPC readiness, and an Anchor-backed registry for publishing verifiable agent work receipts on devnet. Not a VS Code fork.
+**Demo path:** open project -> enable Solana/Helius MCP -> spawn Claude or Codex -> create and fund a devnet task -> submit receipt hashes -> approve and settle -> open Solana Explorer proof.
+
+See the full [Frontier submission runbook](FRONTIER_SUBMISSION.md#2-minute-demo-runbook) for the 2-minute recording flow and devnet preflight.
+
+### Judging checklist
+
+| Criterion | DAEMON fit |
+| --- | --- |
+| Functionality and code quality | Electron app with typed IPC, PTY-backed agent sessions, project MCP management, wallet/RPC readiness, CI, smoke tests, and an Anchor registry. |
+| Impact | Solana builders already use AI coding agents; DAEMON adds the missing trust layer for requested, delivered, reviewed, and settled work. |
+| Novelty | Agent sessions produce task, receipt, review, and settlement evidence instead of relying on chat logs. |
+| Solana UX | Wallet readiness, Solana/Helius MCP setup, devnet task funding, registry transactions, and explorer links are first-class flows. |
+| Open source and composability | MIT-licensed app plus an Anchor registry program that other tools can inspect or build against. |
+| Business plan | Pro desktop, team workspaces, paid MCP/plugin marketplace, and agent-work escrow fees. |
## Install
@@ -43,7 +56,7 @@ DAEMON is a standalone Electron agent workbench for Solana developers who use au
-**Mac:** Build from source (signed builds configurable via Apple credentials):
+**Mac:** Build from source. Signed builds are configurable with Apple Developer credentials:
```bash
git clone https://github.com/nullxnothing/daemon.git
@@ -53,11 +66,11 @@ pnpm run build
pnpm run package
```
-The `.dmg` will be in `release/2.0.0/`. Signed/notarized builds require Apple Developer credentials in the packaging environment. Without them, the app will still package, but Gatekeeper may require right-click > Open on first launch.
+The `.dmg` is emitted under the current release folder, for example `release/3.0.13/`. Without signing credentials, macOS may require right-click > Open on first launch.
-**Linux:** Build from source (AppImage builds coming soon):
+**Linux:** Build from source. AppImage builds are supported through the package script:
```bash
git clone https://github.com/nullxnothing/daemon.git
@@ -67,7 +80,7 @@ pnpm run build
pnpm run package
```
-The AppImage will be in `release/2.0.0/`. Make it executable with `chmod +x` and run directly.
+The AppImage is emitted under the current release folder, for example `release/3.0.13/`. Make it executable with `chmod +x` and run directly.
**Build from source (any platform):**
@@ -94,7 +107,9 @@ Requires **Node.js 22+** and **pnpm 9+**.
-**Agent Launcher** — Spawn Claude Code agents with custom system prompts, model selection, and per-project MCP configurations. Agents run as real CLI sessions in dedicated terminal tabs.
+**Agent Launcher** — Spawn Claude Code or Codex agents with custom system prompts, model selection, and per-project MCP configurations. Agents run as real CLI sessions in dedicated terminal tabs.
+
+**Agent Work Registry** — Create, fund, start, submit, approve, reject, settle, or expire agent work tasks with hashes for the repo, prompt, acceptance criteria, diffs, tests, and artifacts.
**MCP Management** — Toggle project-level and global MCP servers from the sidebar. Changes write directly to `.claude/settings.json` and `.mcp.json` with a restart indicator when configs change.
@@ -112,7 +127,7 @@ Requires **Node.js 22+** and **pnpm 9+**.
**Embedded Browser** — Built-in browser with a security sandbox for previewing and testing.
-**PumpFun Integration** — Token launches and bonding curve interactions directly from the IDE.
+**Solana Integrations** — Wallet, launch, SpawnAgents, PumpFun, x402/MPP, and protocol workflow surfaces inside one local workbench.
**Multi-Project Tabs** — Tabbed project switching with per-project terminal sessions, MCP configs, and file trees. Context switching without losing state.
@@ -156,6 +171,7 @@ Key decisions:
| Database | better-sqlite3 (WAL) |
| Git | simple-git |
| Packaging | electron-builder |
+| Registry | Anchor / Solana devnet |
## Development
@@ -165,11 +181,15 @@ pnpm run dev # Dev server with hot reload
pnpm run typecheck # TypeScript validation
pnpm run test # Run tests (Vitest)
pnpm run build # Production build
-pnpm run package # Create distributable (.exe / .dmg)
+pnpm run package # Create distributable (.exe / .dmg / AppImage)
```
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on pull requests and code style.
+## Community
+
+$DAEMON community token CA: `4vpf4qNtNVkvz2dm5qL2mT6jBXH9gDY8qH2QsHN5pump`
+
## License
[MIT](LICENSE)
From 1f3111ac475438825108f495c8c277a86223206e Mon Sep 17 00:00:00 2001
From: nullxnothing
Date: Tue, 19 May 2026 22:26:21 -0600
Subject: [PATCH 2/3] docs: make Frontier submission self-contained
---
FRONTIER_SUBMISSION.md | 80 ++++++++++++++++++++++++++++++------------
1 file changed, 58 insertions(+), 22 deletions(-)
diff --git a/FRONTIER_SUBMISSION.md b/FRONTIER_SUBMISSION.md
index 32df9803..ffab66a8 100644
--- a/FRONTIER_SUBMISSION.md
+++ b/FRONTIER_SUBMISSION.md
@@ -2,7 +2,7 @@
DAEMON is a Solana-native agent workbench for verifiable AI development work.
-The product turns agent coding sessions into auditable work: a developer opens a project, enables the Solana and Helius MCP stack, spawns an agent, funds a task, receives a work receipt, and approves settlement on devnet. The on-chain registry makes the relationship between prompt, task, agent session, receipt, approval, and settlement inspectable instead of relying on chat logs.
+The product turns agent coding sessions into auditable work: a developer opens a project, enables the Solana and Helius MCP stack, spawns an agent, creates and funds a task, receives a work receipt, reviews it, and approves settlement on devnet. The on-chain registry makes the relationship between prompt, task, agent session, receipt, approval, and settlement inspectable instead of relying on chat logs.
## Positioning
@@ -10,17 +10,34 @@ The product turns agent coding sessions into auditable work: a developer opens a
**Category:** Agent workbench, not a generic IDE.
-**Audience:** Solana founders, protocol teams, and independent builders who already use coding agents but need repeatable project context, MCP setup, wallet/RPC readiness, and proof that paid agent work was requested, delivered, reviewed, and settled.
+**Audience:** Solana founders, protocol teams, agencies, and independent builders who already use coding agents but need repeatable project context, MCP setup, wallet/RPC readiness, and proof that paid agent work was requested, delivered, reviewed, and settled.
+
+**Why Solana:** Solana teams already operate through wallets, RPCs, explorers, devnet/mainnet deploy flows, and on-chain settlement. DAEMON puts the agent workflow next to those primitives instead of leaving the proof trail scattered across terminal logs and chat transcripts.
+
+## Canonical Demo
+
+**One sentence:** DAEMON turns an AI coding task into a devnet-verifiable work receipt and settlement trail.
+
+The demo should show one uninterrupted flow:
+
+1. Open a Solana project in DAEMON.
+2. Enable Solana/Helius MCP readiness.
+3. Spawn Claude or Codex in a dedicated PTY tab.
+4. Create a devnet agent work task with prompt, acceptance criteria, bounty, owner, verifier, and agent wallet.
+5. Fund/start the task.
+6. Submit receipt hashes for commit, diff, tests, and artifact URI.
+7. Approve and settle the task.
+8. Open the Solana Explorer devnet transaction proof.
## 2-Minute Demo Runbook
| Time | Scene | What to show |
| --- | --- | --- |
-| 0:00-0:15 | Open project | Launch DAEMON, open `C:\Users\offic\Projects\DAEMON`, show project tabs, editor, and terminal. |
+| 0:00-0:15 | Open project | Launch DAEMON, open a clean Solana project, show project tabs, editor, and terminal. |
| 0:15-0:30 | Enable Solana/Helius MCP | Open Project Readiness, toggle Solana/Helius MCP, confirm wallet, RPC, and MCP readiness checks. |
| 0:30-0:50 | Spawn agent | Open Agent Launcher, choose Claude or Codex, attach Solana/Helius MCP, spawn an agent in a dedicated PTY tab. |
| 0:50-1:10 | Create and fund task | In Agent Work or Registry controls, create a devnet task with bounty/escrow funding and show the task account. |
-| 1:10-1:25 | Submit work receipt | Have the agent submit a receipt hash/summary for the completed work and show the receipt state. |
+| 1:10-1:25 | Submit work receipt | Submit receipt hashes/summary for completed work and show the receipt state. |
| 1:25-1:45 | Approve and settle | Approve the receipt, settle the task on devnet, and show the final state transition. |
| 1:45-2:00 | Explorer proof | Open the Solana Explorer devnet transaction link and close on the value prop: verifiable AI dev work for Solana teams. |
@@ -29,39 +46,58 @@ Recording checklist:
- Keep the capture under 2 minutes.
- Use a clean project with funded devnet wallet and `RPC_URL` set.
- Copy the final explorer URL into the submission notes.
-- Mention the test status: `pnpm run typecheck`, `pnpm test`, and `cargo test` pass locally.
-- To capture the final take with `ffmpeg`, run:
+- Mention the local validation status: `pnpm run typecheck`, `pnpm test`, and Anchor/Cargo registry tests.
+- Do not lead with token/community materials; lead with the working devnet proof flow.
+- To capture a 120 second take with `ffmpeg`, run:
```powershell
powershell -ExecutionPolicy Bypass -File scripts/frontier-record.ps1
```
-The helper records the desktop for 120 seconds to `docs/frontier-demo.mp4`.
+The helper records the desktop to `docs/frontier-demo.mp4`.
-Devnet preflight:
+## Devnet Preflight
-- Confirm the registry program is current: `solana program show 3nu6sppjDtAKNoBbUAhvFJ35B2JsxpRY6G4Cg72MCJRc --url devnet`.
-- If the deployed binary is stale, rebuild and upgrade the registry before recording: `cargo build-sbf` from `programs/daemon-registry`, then `solana program deploy --url devnet --program-id 3nu6sppjDtAKNoBbUAhvFJ35B2JsxpRY6G4Cg72MCJRc programs/daemon-registry/target/sbpf-solana-solana/release/daemon_registry.so`.
+- Confirm the registry program is current:
-## Business Model
+```bash
+solana program show 3nu6sppjDtAKNoBbUAhvFJ35B2JsxpRY6G4Cg72MCJRc --url devnet
+```
-DAEMON can monetize through four explicit channels:
+- If the deployed binary is stale, rebuild and upgrade the registry before recording:
-1. **Pro desktop:** Paid local app tier for advanced agent orchestration, session replay, telemetry, registry publishing, and premium Solana tooling.
-2. **Team workspaces:** Shared project profiles, policy-controlled MCP configs, audit logs, agent session history, and role-based approval flows for protocol teams.
-3. **Paid MCP/plugin marketplace:** Curated Solana protocol packs, MCP servers, agent skills, and workflow plugins with creator revenue share.
-4. **Agent-work escrow fees:** A small protocol or platform fee on task funding and settlement when teams pay agents or contractors through the on-chain registry.
+```bash
+cd programs/daemon-registry
+cargo build-sbf
+solana program deploy --url devnet --program-id 3nu6sppjDtAKNoBbUAhvFJ35B2JsxpRY6G4Cg72MCJRc target/sbpf-solana-solana/release/daemon_registry.so
+```
+
+- Use a devnet wallet with enough SOL for task funding, rent, and fees.
+- Save the final explorer link beside the demo video for judges.
## Frontier Criteria Fit
-**Functionality and code quality:** Electron app, typed IPC bridge, PTY-backed agent sessions, project-level MCP management, wallet/RPC readiness, and Anchor registry tests.
+| Criterion | DAEMON answer |
+| --- | --- |
+| Functionality and code quality | Electron app, typed IPC bridge, PTY-backed agent sessions, project-level MCP management, wallet/RPC readiness, SQLite migrations, smoke tests, CI, and Anchor registry code. |
+| Impact | Solana builders are adopting coding agents, but teams still need a trustworthy way to request, review, verify, and settle agent work. |
+| Novelty | The core wedge is not another editor. It is a workbench where AI development tasks can produce devnet-verifiable receipts and settlements. |
+| Solana UX | Solana/Helius MCP setup, wallet readiness, RPC checks, devnet registry transactions, task funding, and explorer links are first-class flows. |
+| Open source and composability | MIT-licensed repo with an extensible plugin/MCP architecture and an Anchor program that other tools can inspect or build against. |
+| Business plan | Pro desktop, team workspaces, marketplace fees, and agent-work escrow fees create a path from individual builders to protocol/team usage. |
-**Impact:** Solana builders are already adopting coding agents; DAEMON targets the missing trust layer between autonomous work, human approval, and payment.
+## Business Model
-**Novelty:** The core wedge is not another editor. It is a workbench where AI development tasks can produce devnet-verifiable receipts and settlements.
+DAEMON can monetize through four explicit channels:
-**Solana UX:** Solana/Helius MCP setup, wallet readiness, RPC checks, devnet registry transactions, and explorer links are first-class user flows.
+1. **Pro desktop:** Paid local app tier for advanced agent orchestration, session replay, telemetry, registry publishing, and premium Solana tooling.
+2. **Team workspaces:** Shared project profiles, policy-controlled MCP configs, audit logs, agent session history, and role-based approval flows for protocol teams.
+3. **Paid MCP/plugin marketplace:** Curated Solana protocol packs, MCP servers, agent skills, and workflow plugins with creator revenue share.
+4. **Agent-work escrow fees:** A small protocol or platform fee on task funding and settlement when teams pay agents or contractors through the on-chain registry.
-**Open source and composability:** MIT-licensed repo with an extensible plugin/MCP architecture and an Anchor program that other tools can inspect or build against.
+## Judge Notes
-**Business plan:** Pro desktop, team workspaces, marketplace fees, and agent-work escrow fees create a path from individual builders to paid protocol/team usage.
+- DAEMON is not a VS Code fork.
+- The demo should be evaluated as a Solana-native agent workbench and receipt layer.
+- The important proof is the task lifecycle: prompt -> task -> agent session -> receipt -> approval -> settlement -> explorer link.
+- Community/token information is intentionally separated from the core product narrative so the submission focuses on functionality, Solana UX, and composability.
From b6c91355e15085b7f8e7274efcb053e5974042e1 Mon Sep 17 00:00:00 2001
From: nullxnothing
Date: Tue, 19 May 2026 22:28:36 -0600
Subject: [PATCH 3/3] security: confirm registry state changes
---
electron/ipc/registry.ts | 68 +++++++++++++++++++++++++++++++++++++++-
1 file changed, 67 insertions(+), 1 deletion(-)
diff --git a/electron/ipc/registry.ts b/electron/ipc/registry.ts
index 43629912..df527c70 100644
--- a/electron/ipc/registry.ts
+++ b/electron/ipc/registry.ts
@@ -1,4 +1,4 @@
-import { ipcMain } from 'electron'
+import { dialog, ipcMain } from 'electron'
import { ipcHandler } from '../services/IpcHandlerFactory'
import * as SessionTracker from '../services/SessionTracker'
import * as SessionRegistryService from '../services/SessionRegistryService'
@@ -11,6 +11,28 @@ interface WalletRow {
id: string
}
+async function confirmRegistryAction(options: {
+ title: string
+ message: string
+ detail: string
+ confirmLabel: string
+}): Promise {
+ if (process.env.DAEMON_SMOKE_TEST === '1') return
+
+ const { response } = await dialog.showMessageBox({
+ type: 'warning',
+ buttons: ['Cancel', options.confirmLabel],
+ defaultId: 0,
+ cancelId: 0,
+ title: options.title,
+ message: options.message,
+ detail: options.detail,
+ noLink: true,
+ })
+
+ if (response !== 1) throw new Error(`${options.title} cancelled by user`)
+}
+
function getDefaultWalletId(): string | null {
try {
const row = getDb().prepare('SELECT id FROM wallets WHERE is_default = 1 LIMIT 1').get() as WalletRow | undefined
@@ -46,6 +68,12 @@ export function registerRegistryHandlers() {
ipcMain.handle('registry:fund-agent-work', ipcHandler(async (_event, taskId: string) => {
if (typeof taskId !== 'string' || !taskId) throw new Error('Invalid task ID')
+ await confirmRegistryAction({
+ title: 'Fund Agent Work',
+ message: 'Fund this agent work task on devnet?',
+ detail: `Task ID: ${taskId}`,
+ confirmLabel: 'Fund Task',
+ })
return AgentWorkService.fundTask(taskId)
}))
@@ -61,21 +89,45 @@ export function registerRegistryHandlers() {
ipcMain.handle('registry:approve-agent-work', ipcHandler(async (_event, taskId: string) => {
if (typeof taskId !== 'string' || !taskId) throw new Error('Invalid task ID')
+ await confirmRegistryAction({
+ title: 'Approve Agent Work',
+ message: 'Approve this submitted work receipt?',
+ detail: `Task ID: ${taskId}`,
+ confirmLabel: 'Approve Work',
+ })
return AgentWorkService.approveTask(taskId)
}))
ipcMain.handle('registry:reject-agent-work', ipcHandler(async (_event, taskId: string) => {
if (typeof taskId !== 'string' || !taskId) throw new Error('Invalid task ID')
+ await confirmRegistryAction({
+ title: 'Reject Agent Work',
+ message: 'Reject this submitted work receipt?',
+ detail: `Task ID: ${taskId}`,
+ confirmLabel: 'Reject Work',
+ })
return AgentWorkService.rejectTask(taskId)
}))
ipcMain.handle('registry:settle-agent-work', ipcHandler(async (_event, taskId: string, signature?: string | null) => {
if (typeof taskId !== 'string' || !taskId) throw new Error('Invalid task ID')
+ await confirmRegistryAction({
+ title: 'Settle Agent Work',
+ message: 'Settle this task and finalize the receipt trail?',
+ detail: `Task ID: ${taskId}`,
+ confirmLabel: 'Settle Task',
+ })
return AgentWorkService.settleTask(taskId, signature ?? null)
}))
ipcMain.handle('registry:expire-agent-work', ipcHandler(async (_event, taskId: string) => {
if (typeof taskId !== 'string' || !taskId) throw new Error('Invalid task ID')
+ await confirmRegistryAction({
+ title: 'Expire Agent Work',
+ message: 'Expire this task and finalize the refund/expiry path?',
+ detail: `Task ID: ${taskId}`,
+ confirmLabel: 'Expire Task',
+ })
return AgentWorkService.expireTask(taskId)
}))
@@ -86,6 +138,13 @@ export function registerRegistryHandlers() {
if (session.published_signature) throw new Error('Session already published')
if (session.status !== 'completed') throw new Error('Can only publish completed sessions')
+ await confirmRegistryAction({
+ title: 'Publish Agent Session',
+ message: 'Publish this completed agent session to the registry?',
+ detail: `Session ID: ${sessionId}`,
+ confirmLabel: 'Publish Session',
+ })
+
const walletId = getDefaultWalletId()
if (!walletId) throw new Error('No default wallet configured. Set a default wallet in the Wallet panel.')
@@ -129,6 +188,13 @@ export function registerRegistryHandlers() {
const unpublished = SessionTracker.getUnpublishedSessions()
if (unpublished.length === 0) return { published: 0, failed: 0 }
+ await confirmRegistryAction({
+ title: 'Publish All Sessions',
+ message: `Publish ${unpublished.length} completed agent session(s) to the registry?`,
+ detail: 'Each publish writes registry state using the default wallet.',
+ confirmLabel: 'Publish All',
+ })
+
const keypair = loadKeypair(walletId)
let published = 0
let failed = 0