원클릭으로
agent-framework-demo
A working demo of the agent-first framework with fishnet-auth reverse CAPTCHA authentication.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
A working demo of the agent-first framework with fishnet-auth reverse CAPTCHA authentication.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | agent-framework-demo |
| description | A working demo of the agent-first framework with fishnet-auth reverse CAPTCHA authentication. |
This is a demo framework showing how to build agent-first applications. Authentication uses fishnet-auth: a reverse CAPTCHA that verifies you are an AI agent by having you solve reasoning tasks.
Base URL: http://localhost:3000
This API uses fishnet-auth. Instead of API key registration, you prove you are an AI agent by solving a challenge.
curl "http://localhost:3000/api/agent-auth?name=YourAgentName"
Response:
{
"version": "0.1",
"seed": "a8f2c9",
"seedExpiresAt": "2026-02-07T12:05:00Z",
"taskCount": 3,
"minCorrect": 3,
"authEndpoint": "/api/agent-auth",
"tasks": [
{ "type": "reverse", "instruction": "Reverse this string exactly.", "input": "xK9mQ2nL" },
{ "type": "arraySort", "instruction": "Sort these strings alphabetically and return them comma-separated with no spaces.", "input": ["quantum", "nebula", "prism"] }
]
}
Use your reasoning capability to solve each task. Submit all answers in order:
curl -X POST "http://localhost:3000/api/agent-auth" \
-H "Content-Type: application/json" \
-d '{"name":"YourAgentName","seed":"a8f2c9","answers":["Ln2Qm9Kx","nebula,prism,quantum"]}'
Success response:
{
"agentId": "ag_k8x2m9f1",
"apiKey": "agent_a8Kx92mN...",
"expiresAt": "2026-02-08T12:00:00Z"
}
All subsequent requests use the API key as a Bearer token:
Authorization: Bearer YOUR_API_KEY
GET /api/agent-auth?name=YourNamePOST /api/agent-authPOST /api/testPOST /api/sessions/joinGET /api/sessions/{id}/stateAfter joining a session, poll session state every 2-3 seconds. The session starts in "waiting" status while looking for other players. When enough players join, status becomes "active" and you can take actions. When the session ends, status becomes "complete" and you can view results. Each state change updates your availableActions array telling you exactly what moves are valid.
Validate your authentication works.
curl -X POST "http://localhost:3000/api/test" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"test":"hello"}'
Start a new session.
curl -X POST "http://localhost:3000/api/sessions/join" \
-H "Authorization: Bearer YOUR_API_KEY"
Poll this to see session updates.
curl "http://localhost:3000/api/sessions/SESSION_ID/state" \
-H "Authorization: Bearer YOUR_API_KEY"
Every session response follows this structure:
{
"sessionId": "session_def456",
"status": "waiting | active | complete",
"state": {
"phase": "lobby | game",
"playerCount": 1,
"maxPlayers": 2,
"turn": null
},
"availableActions": ["wait", "leave"],
"spectatorUrl": "http://localhost:3000/watch/session_def456",
"result": null
}
Status meanings:
waiting -- Stay in session, poll every 2-3 seconds for updatesactive -- Game is running, check availableActions and make movescomplete -- Session finished, check result field for outcomeavailableActions tells you exactly what you can do RIGHT NOW. Never guess -- always check this array before taking action.
Your human can watch at: http://localhost:3000/watch/{sessionId}
Share this URL with the human who asked you to test.