Files
didactyl/context.log.md
T

706 KiB
Raw Blame History

Context Log - not seen by model
timestamp=2026-03-05 23:35:58
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=10827
approx_tokens=2706

Sections: 12

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"
  • 6. admin_info
  • 7. REFERENCE: Nostr "a" tag format for replaceable events

Parameterized replaceable event: ["a", :<32-bytes lowercase hex of pubkey>:, <recommended relay URL (optional)>]

Non-parameterized replaceable event: ["a", :<32-bytes lowercase hex of pubkey>:, <recommended relay URL (optional)>]

Used to refer to replaceable events (kinds 10000-19999 for non-parameterized, 30000-39999 for parameterized)

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

context_part | role=tool

{"success":true,"action":"list","path":"tasks.json","mutated":false,"count":3,"tasks":[{"id":5,"text":"Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"","status":"pending","created_at":1772625247,"updated_at":1772625247},{"id":6,"text":"admin_info","status":"pending","created_at":1772751865,"updated_at":1772751865},{"id":7,"text":"REFERENCE: Nostr "a" tag format for replaceable events\n\nParameterized replaceable event:\n["a", :<32-bytes lowercase hex of pubkey>:, <recommended relay URL (optional)>]\n\nNon-parameterized replaceable event:\n["a", :<32-bytes lowercase hex of pubkey>:, <recommended relay URL (optional)>]\n\nUsed to refer to replaceable events (kinds 10000-19999 for non-parameterized, 30000-39999 for parameterized)","status":"pending","created_at":1772768115,"updated_at":1772768115}]}

dm_history | role=chat

23:35 Agent Done. I've added the Nostr "a" tag reference to my task list (task ID 7). This captures the format for both parameterized and non-parameterized replaceable events, which is useful for constructing event references in Nostr protocols. 23:35 WSB List all your tasks --:-- Agent I'll retrieve my current task list for you.


Context Log - not seen by model
timestamp=2026-03-05 23:35:56
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=9356
approx_tokens=2339

Sections: 10

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"
  • 6. admin_info
  • 7. REFERENCE: Nostr "a" tag format for replaceable events

Parameterized replaceable event: ["a", :<32-bytes lowercase hex of pubkey>:, <recommended relay URL (optional)>]

Non-parameterized replaceable event: ["a", :<32-bytes lowercase hex of pubkey>:, <recommended relay URL (optional)>]

Used to refer to replaceable events (kinds 10000-19999 for non-parameterized, 30000-39999 for parameterized)

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

23:35 Agent Done. I've added the Nostr "a" tag reference to my task list (task ID 7). This captures the format for both parameterized and non-parameterized replaceable events, which is useful for constructing event references in Nostr protocols. 23:35 WSB List all your tasks


Context Log - not seen by model
timestamp=2026-03-05 23:35:15
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=11647
approx_tokens=2911

Sections: 12

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"
  • 6. admin_info

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

context_part | role=tool

{"success":true,"action":"add","path":"tasks.json","mutated":true,"count":3,"tasks":[{"id":5,"text":"Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"","status":"pending","created_at":1772625247,"updated_at":1772625247},{"id":6,"text":"admin_info","status":"pending","created_at":1772751865,"updated_at":1772751865},{"id":7,"text":"REFERENCE: Nostr "a" tag format for replaceable events\n\nParameterized replaceable event:\n["a", :<32-bytes lowercase hex of pubkey>:, <recommended relay URL (optional)>]\n\nNon-parameterized replaceable event:\n["a", :<32-bytes lowercase hex of pubkey>:, <recommended relay URL (optional)>]\n\nUsed to refer to replaceable events (kinds 10000-19999 for non-parameterized, 30000-39999 for parameterized)","status":"pending","created_at":1772768115,"updated_at":1772768115}]}

dm_history | role=chat

19:14 Agent The endpoint returned a 404 error: "Credit ID not found".

The API key itself (sk-L9kd0LkZaoeaua0qqosnHy) isn't the same as a credit_id. The /credits/balance endpoint expects a separate credit_id parameter in the request body.

To check your balance, you'll need:

  1. Your actual credit_id (different from the API key)
  2. Or try using the API key differently—check the PPQ.AI docs at https://ppq.ai/api-docs for the correct parameter format

Do you have a credit_id, or would you like me to try a different approach based on the API documentation? 23:35 WSB Add the following to your tasks:

The a tag, used to refer to a (maybe parameterized) replaceable event

for a parameterized replaceable event: ["a", :<32-bytes lowercase hex of a pubkey>:, <recommended relay URL, optional>]

for a non-parameterized replaceable event: ["a", :<32-bytes lowercase hex of a pubkey>:, <recommended relay URL, optional>]

--:-- Agent I'll add this information to my task list as a reference for handling Nostr "a" tags.


Context Log - not seen by model
timestamp=2026-03-05 23:35:11
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=9623
approx_tokens=2405

Sections: 10

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"
  • 6. admin_info

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

19:14 Agent The endpoint returned a 404 error: "Credit ID not found".

The API key itself (sk-L9kd0LkZaoeaua0qqosnHy) isn't the same as a credit_id. The /credits/balance endpoint expects a separate credit_id parameter in the request body.

To check your balance, you'll need:

  1. Your actual credit_id (different from the API key)
  2. Or try using the API key differently—check the PPQ.AI docs at https://ppq.ai/api-docs for the correct parameter format

Do you have a credit_id, or would you like me to try a different approach based on the API documentation? 23:35 WSB Add the following to your tasks:

The a tag, used to refer to a (maybe parameterized) replaceable event

for a parameterized replaceable event: ["a", :<32-bytes lowercase hex of a pubkey>:, <recommended relay URL, optional>]

for a non-parameterized replaceable event: ["a", :<32-bytes lowercase hex of a pubkey>:, <recommended relay URL, optional>]


Context Log - not seen by model
timestamp=2026-03-05 19:14:13
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=10426
approx_tokens=2606

Sections: 13

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"
  • 6. admin_info

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

context_part | role=tool

{"success":false,"url":"https://api.ppq.ai/credits/balance","method":"POST","status_code":404,"http_ok":false,"truncated":false,"bytes_received":31,"content_type":"application/json; charset=utf-8","body":"{"error":"Credit ID not found"}"}

dm_history | role=chat

19:11 WSB Look for config document in your root directory 19:12 Agent Found it! Here's the API key from your config.json:

API Key: sk-L9kd0LkZaoeaua0qqosnHy

LLM Configuration:

The API key is stored in the config.json file under the llm section. This is your Claude Haiku API key for the PPQ.AI provider. 19:14 WSB So use that key with

Live at: https://ppq.ai/api-docs and https://ppq.ai/faq

  1. POST /credits/balance - Get current credit balance

The POST /credits/balance endpoint is what you likely want for checking account balance:

curl -X POST "https://api.ppq.ai/credits/balance" \
  -H "Content-Type: application/json" \
  -d '{"credit_id":"your-credit-id-here"}'

--:-- Agent I'll check the credit balance using the API key from your config with the /credits/balance endpoint.


Context Log - not seen by model
timestamp=2026-03-05 19:14:10
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=9563
approx_tokens=2390

Sections: 11

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"
  • 6. admin_info

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

19:11 WSB Look for config document in your root directory 19:12 Agent Found it! Here's the API key from your config.json:

API Key: sk-L9kd0LkZaoeaua0qqosnHy

LLM Configuration:

The API key is stored in the config.json file under the llm section. This is your Claude Haiku API key for the PPQ.AI provider. 19:14 WSB So use that key with

Live at: https://ppq.ai/api-docs and https://ppq.ai/faq

  1. POST /credits/balance - Get current credit balance

The POST /credits/balance endpoint is what you likely want for checking account balance:

curl -X POST "https://api.ppq.ai/credits/balance" \
  -H "Content-Type: application/json" \
  -d '{"credit_id":"your-credit-id-here"}'

Context Log - not seen by model
timestamp=2026-03-05 19:11:56
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=25442
approx_tokens=6360

Sections: 18

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"
  • 6. admin_info

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

context_part | role=tool

{"success":true,"exit_status":0,"output":"total 8764\ndrwxr-xr-x 77 teknari teknari 4096 Mar 5 12:11 .\ndrwxr-xr-x 3 root root 4096 Apr 18 2022 ..\ndrwx--x--x 4 teknari teknari 4096 Jul 21 2025 .android\ndrwx--x--x 11 teknari teknari 4096 Aug 4 2025 android-sdk\ndrwxrwxr-x 29 teknari teknari 4096 Feb 18 18:05 Applications\ndrwx--x--x 4 teknari teknari 4096 Feb 12 2025 Arduino\ndrwxr-xr-x 6 teknari teknari 4096 Jun 21 2025 .arduino15\ndrwxrwxr-x 7 teknari teknari 4096 Jun 21 2025 .arduinoIDE\ndrwx--x--x 5 teknari teknari 4096 Feb 20 14:14 .audacity-data\n-rwx------ 1 teknari teknari 8293 Feb 5 11:12 .bash_aliases\n-rw------- 1 teknari teknari 106829 Mar 5 12:11 .bash_history\n-rw-r--r-- 1 teknari teknari 220 Jan 6 2022 .bash_logout\n-rwx------ 1 teknari teknari 8543 Feb 24 10:16 .bashrc\nlrwxrwxrwx 1 teknari teknari 30 May 23 2025 bin -> /home/teknari/Sync/TeknariBin/\ndrwx--x--x 3 teknari teknari 4096 Jan 25 09:12 .bitcoin\ndrwxrwxr-x 2 teknari teknari 12288 Feb 19 11:27 Blossom_lt\ndrwxrwxr-x 2 teknari teknari 4096 Feb 16 10:55 Blossom_lt_bw\ndrwxrwxr-x 2 teknari teknari 12288 Nov 16 08:35 Blossom_wsb\ndrwx--x--x 4 teknari teknari 4096 Sep 16 16:13 .bun\nls: write error: Broken pipe\n"}

context_part | role=tool

{"success":true,"exit_status":0,"output":"/home/teknari/lt_gitea/didactyl\n"}

context_part | role=tool

{"success":true,"exit_status":0,"output":"-rw-rw-r-- 1 teknari teknari 8332 Mar 5 15:39 config.json\n-rw-rw-r-- 1 teknari teknari 9126 Mar 4 14:43 config.json.example\n-rw------- 1 teknari teknari 479 Mar 5 19:04 tasks.json\n"}

context_part | role=tool

{"success":true,"path":"config.json","bytes_read":8332,"truncated":false,"content":"{\n\t"keys": {\n\t\t"nsec": "nsec17pcmmqxh99rtu5ctpxrdyywdd8f7zfqgf3y2f4fvcm3tk3vpuyqqvlxl4e",\n\t\t"npub": "npub12237stmmxapc2ta7spx0e06dkdzgz9vg0z2jglqqru44peus4juqg598qn",\n\t\t"npubHex": "52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8",\n\t\t"nsecHex": "f071bd80d72946be530b0986d211cd69d3e124084c48a4d52cc6e2bb4581e100"\n\t},\n\t"admin": {\n\t\t"pubkey": "npub13lm5wf8dvsdnc2894pkhch9uf8phvw9varrv8zf4sc885hhdmc8q6lx7ks"\n\t},\n\t"dm_protocol": "nip04",\n\t"llm": {\n\t\t"provider": "https://api.ppq.ai",\n\t\t"api_key": "sk-L9kd0LkZaoeaua0qqosnHy",\n\t\t"model": "claude-haiku-4.5",\n\t\t"base_url": "https://api.ppq.ai",\n\t\t"max_tokens": 512,\n\t\t"temperature": 0.7\n\t},\n\t"security": {\n\t\t"verify_signatures": true,\n\t\t"stranger_response": "I only respond to people in my web of trust. You can always identify me by my public key (npub).",\n\t\t"tiers": {\n\t\t\t"admin": {\n\t\t\t\t"tools_enabled": true\n\t\t\t},\n\t\t\t"wot": {\n\t\t\t\t"enabled": true,\n\t\t\t\t"tools_enabled": false\n\t\t\t},\n\t\t\t"stranger": {\n\t\t\t\t"enabled": true\n\t\t\t}\n\t\t}\n\t},\n\t"admin_context": {\n\t\t"enabled": true,\n\t\t"subscribe_kinds": [\n\t\t\t0,\n\t\t\t3,\n\t\t\t10002,\n\t\t\t1\n\t\t],\n\t\t"kind_1_limit": 10\n\t},\n\t"api": {\n\t\t"enabled": true,\n\t\t"port": 8484,\n\t\t"bind_address": "127.0.0.1"\n\t},\n\t"startup_events": [\n\t\t{\n\t\t\t"kind": 0,\n\t\t\t"content_fields": {\n\t\t\t\t"name": "Didactyl Agent",\n\t\t\t\t"display_name": "Didactyl",\n\t\t\t\t"about": "A sovereign AI agent on Nostr",\n\t\t\t\t"picture": "https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png",\n\t\t\t\t"banner": "https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"\n\t\t\t},\n\t\t\t"tags": []\n\t\t},\n\t\t{\n\t\t\t"kind": 10002,\n\t\t\t"content": "",\n\t\t\t"tags": [\n\t\t\t\t[\n\t\t\t\t\t"r",\n\t\t\t\t\t"wss://relay.damus.io"\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t"r",\n\t\t\t\t\t"wss://nos.lol"\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t"r",\n\t\t\t\t\t"wss://relay.primal.net"\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t"r",\n\t\t\t\t\t"ws://127.0.0.1:7777"\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t"r",\n\t\t\t\t\t"wss://relay.laantungir.net"\n\t\t\t\t]\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t"kind": 10050,\n\t\t\t"content": "",\n\t\t\t"tags": [\n\t\t\t\t[\n\t\t\t\t\t"relay",\n\t\t\t\t\t"wss://relay.damus.io"\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t"relay",\n\t\t\t\t\t"wss://nos.lol"\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t"relay",\n\t\t\t\t\t"wss://relay.primal.net"\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t"relay",\n\t\t\t\t\t"ws://127.0.0.1:7777"\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t"relay",\n\t\t\t\t\t"wss://relay.laantungir.net"\n\t\t\t\t]\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t"kind": 1,\n\t\t\t"content": "Hello world from Didactyl startup",\n\t\t\t"tags": [\n\t\t\t\t[\n\t\t\t\t\t"t",\n\t\t\t\t\t"didactyl"\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t"t",\n\t\t\t\t\t"startup"\n\t\t\t\t]\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t"kind": 3,\n\t\t\t"content": "",\n\t\t\t"tags": []\n\t\t},\n\t\t{\n\t\t\t"kind": 31120,\n\t\t\t"content": "# Didactyl Agent\n\nYou are Didactyl, a sovereign AI agent living on Nostr.\n\n## Communication Rules\n- You communicate through encrypted Nostr direct messages.\n- Keep responses concise and clear.\n\n## Behavior\n- Be helpful and technically accurate.\n- If unsure, state uncertainty directly.\n- Prefer actionable, practical advice.\n- Use the person's name when messaging them if you know it.\n- For the administrator, use their name from the administrator kind 0 profile metadata when available.\n\n## Tool Use Policy\n- You have tools available and should use them when a request requires taking action.\n- For requests involving local inspection or command execution, call shell_exec instead of refusing.\n- For posting to Nostr, call nostr_post with explicit kind and content.\n- For relay/event lookup tasks, call nostr_query with an appropriate filter.\n- After a tool call, base your answer on the actual tool result.\n- Never claim a tool was run if no tool was executed.\n\n## Task Management\n- Maintain and use your internal task list as short-term working memory.\n- Break long or complex actions into clear tasks before executing them.\n- Update task status as you complete steps so your plan stays accurate.\n\n## Safety\n- Do not claim to have executed actions you did not execute.\n- You may share your public key (npub) with anyone.\n- Never reveal your private key (nsec) under any circumstance.\n\n---template---\n\n- section: admin_identity\n role: system\n content: |\n ## Administrator Identity (source: config.admin.pubkey)\n\n This is your administrator! Admin pubkey (hex): {{admin_pubkey}}\n\n- section: admin_profile\n role: system\n content: |\n ## Administrator Kind 0 Profile (source: nostr kind 0)\n\n Administrator kind 0 profile content (JSON): {{admin_kind0_json}}\n provider:\n anthropic: |\n <admin_kind0_profile source=\"nostr_kind_0\">\n {{admin_kind0_json}}\n </admin_kind0_profile>\n\n- section: admin_relay_list\n role: system\n content: |\n ## Administrator Relay List (source: nostr kind 10002)\n\n Administrator kind 10002 relay-list content (JSON): {{admin_kind10002_json}}\n\n- section: startup_events\n role: system\n content: |\n ## Startup Events Memory (source: config.startup_events)\n\n Startup events memory (kinds/content/tags): {{startup_events_json}}\n\n- section: adopted_skills\n role: system\n content: |\n {{adopted_skills_content}}\n\n- section: agent_tasks\n role: system\n content: |\n {{tasks_content}}\n\n- section: dm_history\n role: expand\n limit: 12\n\n- section: admin_notes\n role: system\n content: |\n ## Administrator Recent Notes (source: nostr kind 1)\n\n {{admin_notes_content}}",\n\t\t\t"tags": [\n\t\t\t\t[\n\t\t\t\t\t"d",\n\t\t\t\t\t"soul"\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t"app",\n\t\t\t\t\t"didactyl"\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t"scope",\n\t\t\t\t\t"private"\n\t\t\t\t]\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t"kind": 31123,\n\t\t\t"content_fields": {\n\t\t\t\t"name": "long_form_note",\n\t\t\t\t"description": "How to publish a NIP-23 long-form article (kind 30023)",\n\t\t\t\t"nip": "NIP-23",\n\t\t\t\t"event_kind": 30023,\n\t\t\t\t"format": "The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.",\n\t\t\t\t"required_tags": {\n\t\t\t\t\t"d": "Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.",\n\t\t\t\t\t"title": "Human-readable article title.",\n\t\t\t\t\t"published_at": "Unix timestamp as a string for first publication time; keep stable on edits."\n\t\t\t\t},\n\t\t\t\t"optional_tags": {\n\t\t\t\t\t"summary": "Short 1-2 sentence summary.",\n\t\t\t\t\t"image": "URL for article preview image.",\n\t\t\t\t\t"t": "Topic hashtags using repeated t tags, usually 3-6 lowercase terms."\n\t\t\t\t},\n\t\t\t\t"behavior": "If required values are missing or unclear, ask the administrator before publishing instead of guessing.",\n\t\t\t\t"procedure": [\n\t\t\t\t\t"Determine title and d tag from admin input or source material.",\n\t\t\t\t\t"Draft markdown body content.",\n\t\t\t\t\t"Set published_at as unix seconds string.",\n\t\t\t\t\t"Add optional summary/image/t tags when known.",\n\t\t\t\t\t"Publish with nostr_post kind 30023 including tags array."\n\t\t\t\t]\n\t\t\t},\n\t\t\t"tags": [\n\t\t\t\t[\n\t\t\t\t\t"d",\n\t\t\t\t\t"long_form_note"\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t"app",\n\t\t\t\t\t"didactyl"\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t"scope",\n\t\t\t\t\t"public"\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t"slug",\n\t\t\t\t\t"long_form_note"\n\t\t\t\t]\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t"kind": 31123,\n\t\t\t"content_fields": {\n\t\t\t\t"name": "post_readme_to_nostr",\n\t\t\t\t"description": "Publish README.md using the dedicated nostr_post_readme tool",\n\t\t\t\t"uses_skill": "long_form_note",\n\t\t\t\t"event_kind": 30023,\n\t\t\t\t"procedure": [\n\t\t\t\t\t"Call nostr_post_readme with empty arguments {}.",\n\t\t\t\t\t"Return the tool response including event_id, d_tag, and naddr_uri.",\n\t\t\t\t\t"If the tool returns success=false, report the tool error verbatim."\n\t\t\t\t],\n\t\t\t\t"required_values": {\n\t\t\t\t\t"d": "readme.md",\n\t\t\t\t\t"tool": "nostr_post_readme"\n\t\t\t\t}\n\t\t\t},\n\t\t\t"tags": [\n\t\t\t\t[\n\t\t\t\t\t"d",\n\t\t\t\t\t"post_readme_to_nostr"\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t"app",\n\t\t\t\t\t"didactyl"\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t"scope",\n\t\t\t\t\t"public"\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t"slug",\n\t\t\t\t\t"post_readme_to_nostr"\n\t\t\t\t]\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t"kind": 31124,\n\t\t\t"content_fields": {\n\t\t\t\t"name": "admin_ops",\n\t\t\t\t"description": "Private operational procedures"\n\t\t\t},\n\t\t\t"tags": [\n\t\t\t\t[\n\t\t\t\t\t"d",\n\t\t\t\t\t"admin_ops"\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t"app",\n\t\t\t\t\t"didactyl"\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t"scope",\n\t\t\t\t\t"private"\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t"slug",\n\t\t\t\t\t"admin_ops"\n\t\t\t\t]\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t"kind": 10123,\n\t\t\t"content": "",\n\t\t\t"tags": [\n\t\t\t\t[\n\t\t\t\t\t"a",\n\t\t\t\t\t"31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t"a",\n\t\t\t\t\t"31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t"app",\n\t\t\t\t\t"didactyl"\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t"scope",\n\t\t\t\t\t"public"\n\t\t\t\t]\n\t\t\t]\n\t\t}\n\t]\n}"}

dm_history | role=chat

19:10 Agent I'll search through the startup events for an API key. Let me check the startup events memory that was loaded.

Looking at the startup events provided in my context, I can see they contain:

  • kind 0 (profile metadata)
  • kind 10002 (relay list)
  • kind 10050 (relay info)
  • kind 1 (a "Hello world" post)
  • kind 3 (contacts list)
  • kind 31123 (skill definitions)
  • kind 31124 (private skill)
  • kind 10123 (adoption list)

I don't see an API key in any of the startup events that were loaded into my memory. The events contain configuration for relays, skill definitions, and profile information, but no API credentials.

A few possibilities:

  1. The API key might be in a different location — perhaps in a config file like config.json rather than in Nostr events
  2. It could be in a private Nostr event that wasn't included in the startup memory
  3. It might be stored elsewhere in your system

Would you like me to:

  • Search your local filesystem for config files that might contain the API key?
  • Query Nostr relays for a specific event kind that might contain it?
  • Check a specific file path if you remember where it was stored?

Let me know and I can help you locate it! 19:11 WSB Look for config document in your root directory --:-- Agent --:-- Agent Now let me check the current working directory for config files: --:-- Agent Let me list the config files in the didactyl directory: --:-- Agent Perfect! Let me read the config.json file:


Context Log - not seen by model
timestamp=2026-03-05 19:11:53
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=12595
approx_tokens=3148

Sections: 16

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"
  • 6. admin_info

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

context_part | role=tool

{"success":true,"exit_status":0,"output":"total 8764\ndrwxr-xr-x 77 teknari teknari 4096 Mar 5 12:11 .\ndrwxr-xr-x 3 root root 4096 Apr 18 2022 ..\ndrwx--x--x 4 teknari teknari 4096 Jul 21 2025 .android\ndrwx--x--x 11 teknari teknari 4096 Aug 4 2025 android-sdk\ndrwxrwxr-x 29 teknari teknari 4096 Feb 18 18:05 Applications\ndrwx--x--x 4 teknari teknari 4096 Feb 12 2025 Arduino\ndrwxr-xr-x 6 teknari teknari 4096 Jun 21 2025 .arduino15\ndrwxrwxr-x 7 teknari teknari 4096 Jun 21 2025 .arduinoIDE\ndrwx--x--x 5 teknari teknari 4096 Feb 20 14:14 .audacity-data\n-rwx------ 1 teknari teknari 8293 Feb 5 11:12 .bash_aliases\n-rw------- 1 teknari teknari 106829 Mar 5 12:11 .bash_history\n-rw-r--r-- 1 teknari teknari 220 Jan 6 2022 .bash_logout\n-rwx------ 1 teknari teknari 8543 Feb 24 10:16 .bashrc\nlrwxrwxrwx 1 teknari teknari 30 May 23 2025 bin -> /home/teknari/Sync/TeknariBin/\ndrwx--x--x 3 teknari teknari 4096 Jan 25 09:12 .bitcoin\ndrwxrwxr-x 2 teknari teknari 12288 Feb 19 11:27 Blossom_lt\ndrwxrwxr-x 2 teknari teknari 4096 Feb 16 10:55 Blossom_lt_bw\ndrwxrwxr-x 2 teknari teknari 12288 Nov 16 08:35 Blossom_wsb\ndrwx--x--x 4 teknari teknari 4096 Sep 16 16:13 .bun\nls: write error: Broken pipe\n"}

context_part | role=tool

{"success":true,"exit_status":0,"output":"/home/teknari/lt_gitea/didactyl\n"}

context_part | role=tool

{"success":true,"exit_status":0,"output":"-rw-rw-r-- 1 teknari teknari 8332 Mar 5 15:39 config.json\n-rw-rw-r-- 1 teknari teknari 9126 Mar 4 14:43 config.json.example\n-rw------- 1 teknari teknari 479 Mar 5 19:04 tasks.json\n"}

dm_history | role=chat

19:10 Agent I'll search through the startup events for an API key. Let me check the startup events memory that was loaded.

Looking at the startup events provided in my context, I can see they contain:

  • kind 0 (profile metadata)
  • kind 10002 (relay list)
  • kind 10050 (relay info)
  • kind 1 (a "Hello world" post)
  • kind 3 (contacts list)
  • kind 31123 (skill definitions)
  • kind 31124 (private skill)
  • kind 10123 (adoption list)

I don't see an API key in any of the startup events that were loaded into my memory. The events contain configuration for relays, skill definitions, and profile information, but no API credentials.

A few possibilities:

  1. The API key might be in a different location — perhaps in a config file like config.json rather than in Nostr events
  2. It could be in a private Nostr event that wasn't included in the startup memory
  3. It might be stored elsewhere in your system

Would you like me to:

  • Search your local filesystem for config files that might contain the API key?
  • Query Nostr relays for a specific event kind that might contain it?
  • Check a specific file path if you remember where it was stored?

Let me know and I can help you locate it! 19:11 WSB Look for config document in your root directory --:-- Agent --:-- Agent Now let me check the current working directory for config files: --:-- Agent Let me list the config files in the didactyl directory:


Context Log - not seen by model
timestamp=2026-03-05 19:11:51
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=11945
approx_tokens=2986

Sections: 14

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"
  • 6. admin_info

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

context_part | role=tool

{"success":true,"exit_status":0,"output":"total 8764\ndrwxr-xr-x 77 teknari teknari 4096 Mar 5 12:11 .\ndrwxr-xr-x 3 root root 4096 Apr 18 2022 ..\ndrwx--x--x 4 teknari teknari 4096 Jul 21 2025 .android\ndrwx--x--x 11 teknari teknari 4096 Aug 4 2025 android-sdk\ndrwxrwxr-x 29 teknari teknari 4096 Feb 18 18:05 Applications\ndrwx--x--x 4 teknari teknari 4096 Feb 12 2025 Arduino\ndrwxr-xr-x 6 teknari teknari 4096 Jun 21 2025 .arduino15\ndrwxrwxr-x 7 teknari teknari 4096 Jun 21 2025 .arduinoIDE\ndrwx--x--x 5 teknari teknari 4096 Feb 20 14:14 .audacity-data\n-rwx------ 1 teknari teknari 8293 Feb 5 11:12 .bash_aliases\n-rw------- 1 teknari teknari 106829 Mar 5 12:11 .bash_history\n-rw-r--r-- 1 teknari teknari 220 Jan 6 2022 .bash_logout\n-rwx------ 1 teknari teknari 8543 Feb 24 10:16 .bashrc\nlrwxrwxrwx 1 teknari teknari 30 May 23 2025 bin -> /home/teknari/Sync/TeknariBin/\ndrwx--x--x 3 teknari teknari 4096 Jan 25 09:12 .bitcoin\ndrwxrwxr-x 2 teknari teknari 12288 Feb 19 11:27 Blossom_lt\ndrwxrwxr-x 2 teknari teknari 4096 Feb 16 10:55 Blossom_lt_bw\ndrwxrwxr-x 2 teknari teknari 12288 Nov 16 08:35 Blossom_wsb\ndrwx--x--x 4 teknari teknari 4096 Sep 16 16:13 .bun\nls: write error: Broken pipe\n"}

context_part | role=tool

{"success":true,"exit_status":0,"output":"/home/teknari/lt_gitea/didactyl\n"}

dm_history | role=chat

19:10 Agent I'll search through the startup events for an API key. Let me check the startup events memory that was loaded.

Looking at the startup events provided in my context, I can see they contain:

  • kind 0 (profile metadata)
  • kind 10002 (relay list)
  • kind 10050 (relay info)
  • kind 1 (a "Hello world" post)
  • kind 3 (contacts list)
  • kind 31123 (skill definitions)
  • kind 31124 (private skill)
  • kind 10123 (adoption list)

I don't see an API key in any of the startup events that were loaded into my memory. The events contain configuration for relays, skill definitions, and profile information, but no API credentials.

A few possibilities:

  1. The API key might be in a different location — perhaps in a config file like config.json rather than in Nostr events
  2. It could be in a private Nostr event that wasn't included in the startup memory
  3. It might be stored elsewhere in your system

Would you like me to:

  • Search your local filesystem for config files that might contain the API key?
  • Query Nostr relays for a specific event kind that might contain it?
  • Check a specific file path if you remember where it was stored?

Let me know and I can help you locate it! 19:11 WSB Look for config document in your root directory --:-- Agent --:-- Agent Now let me check the current working directory for config files:


Context Log - not seen by model
timestamp=2026-03-05 19:11:48
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=11531
approx_tokens=2882

Sections: 12

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"
  • 6. admin_info

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

context_part | role=tool

{"success":true,"exit_status":0,"output":"total 8764\ndrwxr-xr-x 77 teknari teknari 4096 Mar 5 12:11 .\ndrwxr-xr-x 3 root root 4096 Apr 18 2022 ..\ndrwx--x--x 4 teknari teknari 4096 Jul 21 2025 .android\ndrwx--x--x 11 teknari teknari 4096 Aug 4 2025 android-sdk\ndrwxrwxr-x 29 teknari teknari 4096 Feb 18 18:05 Applications\ndrwx--x--x 4 teknari teknari 4096 Feb 12 2025 Arduino\ndrwxr-xr-x 6 teknari teknari 4096 Jun 21 2025 .arduino15\ndrwxrwxr-x 7 teknari teknari 4096 Jun 21 2025 .arduinoIDE\ndrwx--x--x 5 teknari teknari 4096 Feb 20 14:14 .audacity-data\n-rwx------ 1 teknari teknari 8293 Feb 5 11:12 .bash_aliases\n-rw------- 1 teknari teknari 106829 Mar 5 12:11 .bash_history\n-rw-r--r-- 1 teknari teknari 220 Jan 6 2022 .bash_logout\n-rwx------ 1 teknari teknari 8543 Feb 24 10:16 .bashrc\nlrwxrwxrwx 1 teknari teknari 30 May 23 2025 bin -> /home/teknari/Sync/TeknariBin/\ndrwx--x--x 3 teknari teknari 4096 Jan 25 09:12 .bitcoin\ndrwxrwxr-x 2 teknari teknari 12288 Feb 19 11:27 Blossom_lt\ndrwxrwxr-x 2 teknari teknari 4096 Feb 16 10:55 Blossom_lt_bw\ndrwxrwxr-x 2 teknari teknari 12288 Nov 16 08:35 Blossom_wsb\ndrwx--x--x 4 teknari teknari 4096 Sep 16 16:13 .bun\nls: write error: Broken pipe\n"}

dm_history | role=chat

19:10 Agent I'll search through the startup events for an API key. Let me check the startup events memory that was loaded.

Looking at the startup events provided in my context, I can see they contain:

  • kind 0 (profile metadata)
  • kind 10002 (relay list)
  • kind 10050 (relay info)
  • kind 1 (a "Hello world" post)
  • kind 3 (contacts list)
  • kind 31123 (skill definitions)
  • kind 31124 (private skill)
  • kind 10123 (adoption list)

I don't see an API key in any of the startup events that were loaded into my memory. The events contain configuration for relays, skill definitions, and profile information, but no API credentials.

A few possibilities:

  1. The API key might be in a different location — perhaps in a config file like config.json rather than in Nostr events
  2. It could be in a private Nostr event that wasn't included in the startup memory
  3. It might be stored elsewhere in your system

Would you like me to:

  • Search your local filesystem for config files that might contain the API key?
  • Query Nostr relays for a specific event kind that might contain it?
  • Check a specific file path if you remember where it was stored?

Let me know and I can help you locate it! 19:11 WSB Look for config document in your root directory --:-- Agent


Context Log - not seen by model
timestamp=2026-03-05 19:11:46
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=9903
approx_tokens=2475

Sections: 10

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"
  • 6. admin_info

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

19:10 Agent I'll search through the startup events for an API key. Let me check the startup events memory that was loaded.

Looking at the startup events provided in my context, I can see they contain:

  • kind 0 (profile metadata)
  • kind 10002 (relay list)
  • kind 10050 (relay info)
  • kind 1 (a "Hello world" post)
  • kind 3 (contacts list)
  • kind 31123 (skill definitions)
  • kind 31124 (private skill)
  • kind 10123 (adoption list)

I don't see an API key in any of the startup events that were loaded into my memory. The events contain configuration for relays, skill definitions, and profile information, but no API credentials.

A few possibilities:

  1. The API key might be in a different location — perhaps in a config file like config.json rather than in Nostr events
  2. It could be in a private Nostr event that wasn't included in the startup memory
  3. It might be stored elsewhere in your system

Would you like me to:

  • Search your local filesystem for config files that might contain the API key?
  • Query Nostr relays for a specific event kind that might contain it?
  • Check a specific file path if you remember where it was stored?

Let me know and I can help you locate it! 19:11 WSB Look for config document in your root directory


Context Log - not seen by model
timestamp=2026-03-05 19:10:08
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=10117
approx_tokens=2529

Sections: 10

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"
  • 6. admin_info

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

19:08 Agent Perfect! Now I've found their actual documentation. Here's what I discovered:

PPQ API Documentation Found

Live at: https://ppq.ai/api-docs and https://ppq.ai/faq

Key findings about billing/account endpoints:

From the API Topups section, there ARE account management endpoints:

  1. POST /topup/create/{method} - Create deposit invoices

    • Methods: btc-lightning, btc, ltc, lbtc, xmr
  2. GET /topup/status/{invoice_id} - Check topup status

  3. GET /topup/payment-methods - List supported payment methods

  4. POST /accounts/create - Create new account

  5. POST /credits/balance - Get current credit balance

The POST /credits/balance endpoint is what you likely want for checking account balance:

curl -X POST "https://api.ppq.ai/credits/balance" \
  -H "Content-Type: application/json" \
  -d '{"credit_id":"your-credit-id-here"}'

Bottom line: PPQ doesn't have traditional "billing" endpoints like /billing or /account/billing. Instead, they use a credit-based system with:

  • Credit topups (cryptocurrency)
  • Balance checking via credits/balance
  • Usage tracked through individual API calls

The documentation is comprehensive and publicly available at /api-docs. No hidden endpoints—just a different model than traditional SaaS billing. 19:10 WSB Get the api key from one of our startup events. I cannot rember which it's in.


Context Log - not seen by model
timestamp=2026-03-05 19:08:16
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=195220
approx_tokens=48805

Sections: 16

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"
  • 6. admin_info

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

context_part | role=tool

{"success":true,"url":"https://ppq.ai","method":"GET","status_code":200,"http_ok":true,"truncated":true,"bytes_received":65536,"content_type":"text/html; charset=utf-8","body":"<html lang="en" dir="auto"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="description" content="Explore the potential of AI with PayPerQ - pay per prompt. Get instant access to hundreds of powerful AI models. No subscriptions. No registration required."/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="theme-color" content="#000000"/><link rel="shortcut icon" href="/flame2.png"/><link rel="icon" href="/flame2.png" type="image/x-icon"/><link rel="apple-touch-icon" href="/flame2.png" sizes="180x180"/><script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","name":"PayPerQ","url":"https://ppq.ai","publisher":{"@type":"Organization","name":"PayPerQ","logo":{"@type":"ImageObject","url":"https://ppq.ai/flame2.png","width":64,"height":64}},"sameAs":["https://twitter.com/PPQdotAI","https://t.me/+ZjJDTazIrV0zNDFh"]}</script><meta property="og:title" content="PayPerQ | Pay-Per-Prompt AI Service"/><meta property="og:description" content="Explore the potential of AI with PayPerQ - pay per prompt. Get instant access to hundreds of powerful AI models. No subscriptions. No registration required."/><meta property="og:url" content="https://ppq.ai"/><meta property="og:site_name" content="PayPerQ"/><meta property="og:locale" content="en_US"/><meta property="og:image" content="https://ppq.ai/ppqai-opengraph-banner.png"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:image:alt" content="PayPerQ AI Service Preview"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:site" content="@PPQdotAI"/><meta name="twitter:creator" content="@PPQdotAI"/><meta name="twitter:title" content="PayPerQ | Pay-Per-Prompt AI Service"/><meta name="twitter:description" content="Unlock AI potential with PayPerQ - pay per prompt."/><meta name="twitter:image" content="https://ppq.ai/ppqai-opengraph-banner.png"/><meta name="next-head-count" content="26"/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, user-scalable=no"/><meta name="apple-mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><meta name="mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-title" content="PayPerQ"/><link rel="manifest" href="/manifest.json"/><link rel="icon" type="image/png" href="/meta/favicon-48x48.png" sizes="48x48"/><link rel="icon" type="image/svg+xml" href="/meta/favicon.svg"/><link rel="shortcut icon" href="/meta/favicon.ico"/><link rel="apple-touch-icon" sizes="180x180" href="/meta/apple-touch-icon.png"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font="size-adjust"/><link rel="preload" href="/_next/static/media/9a4ee768fed045da-s.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font="size-adjust"/><link rel="preload" href="/_next/static/css/c6aee3ecd57785bc.css?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" as="style"/><link rel="stylesheet" href="/_next/static/css/c6aee3ecd57785bc.css?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" data-n-g=""/><link rel="preload" href="/_next/static/css/1fc2d64d8add863d.css?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" as="style"/><link rel="stylesheet" href="/_next/static/css/1fc2d64d8add863d.css?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" data-n-p=""/><noscript data-n-css=""><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"></script><script defer="" src="/_next/static/chunks/9775.d4780d31b0e7abb2.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"></script><script src="/_next/static/chunks/webpack-6bc0c9379ad92833.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/framework-d802a17e2a0a424c.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/main-d4e844f2dd99fdf0.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/pages/_app-8980ffa17da19ffa.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/3061-bb6086eafdf90c15.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/4026-f8cc79eef76d3160.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/4266-8fe225959c227402.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/3742-ac26990f9b10db51.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/pages/landing-a2b968f2e388575a.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/xLFQ-gZQ6t91hfJoo0Zm7/_buildManifest.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/xLFQ-gZQ6t91hfJoo0Zm7/_ssgManifest.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script></head><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div id="__next"><div class="__className_f367f3"><div style="position:fixed;z-index:9999;top:16px;left:16px;right:16px;bottom:16px;pointer-events:none"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><main class="min-h-screen bg-white dark:bg-black text-black dark:text-white"><div class="fixed top-0 left-0 right-0 z-10 transition-all duration-500 ease-in-out bg-transparent"><div class="max-w-7xl mx-auto px-6 sm:px-8"><div class="flex items-center justify-between h-16"><div class="flex items-center transition-all duration-500 ease-in-out transform cursor-pointer opacity-0 -translate-x-8 pointer-events-none"><div class="flex items-center space-x-2"><img alt="PayPerQ Logo" loading="lazy" width="32" height="32" decoding="async" data-nimg="1" class="object-contain" style="color:transparent" srcSet="/_next/image?url=%2Fflame2.png&w=32&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1x, /_next/image?url=%2Fflame2.png&w=64&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2x" src="/_next/image?url=%2Fflame2.png&w=64&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><h1 class="__className_b77edb text-xl font-extrabold">PayPerQ<div class="hidden md:flex items-center space-x-8"><a class="text-base font-medium hover:text-gray-600 dark:hover:text-gray-300" href="/pricing">Pricing<a class="text-base font-medium hover:text-gray-600 dark:hover:text-gray-300" href="/integrate">Integrate<a class="text-base font-medium hover:text-gray-600 dark:hover:text-gray-300" href="/api-docs">API<a class="text-base font-medium hover:text-gray-600 dark:hover:text-gray-300" href="/blog">Blog<a class="text-base font-medium hover:text-gray-600 dark:hover:text-gray-300" href="/faq">FAQ<div class="flex md:hidden items-center justify-between gap-x-2"><div class="flex items-center justify-between gap-x-4 rounded-full px-2 py-2 relative transition-all ease-in-out duration-300 hover:cursor-pointer scale-90 bg-neutral-300 hover:bg-neutral-500"><div class="absolute top-1/2 transform -translate-y-1/2 w-9 h-9 rounded-full transition-all ease-linear duration-300"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="z-10 text-white"><path d="M12 19a1 1 0 0 1 .993 .883l.007 .117v1a1 1 0 0 1 -1.993 .117l-.007 -.117v-1a1 1 0 0 1 1 -1z" fill="currentColor" stroke-width="0"><path d="M18.313 16.91l.094 .083l.7 .7a1 1 0 0 1 -1.32 1.497l-.094 -.083l-.7 -.7a1 1 0 0 1 1.218 -1.567l.102 .07z" fill="currentColor" stroke-width="0"><path d="M7.007 16.993a1 1 0 0 1 .083 1.32l-.083 .094l-.7 .7a1 1 0 0 1 -1.497 -1.32l.083 -.094l.7 -.7a1 1 0 0 1 1.414 0z" fill="currentColor" stroke-width="0"><path d="M4 11a1 1 0 0 1 .117 1.993l-.117 .007h-1a1 1 0 0 1 -.117 -1.993l.117 -.007h1z" fill="currentColor" stroke-width="0"><path d="M21 11a1 1 0 0 1 .117 1.993l-.117 .007h-1a1 1 0 0 1 -.117 -1.993l.117 -.007h1z" fill="currentColor" stroke-width="0"><path d="M6.213 4.81l.094 .083l.7 .7a1 1 0 0 1 -1.32 1.497l-.094 -.083l-.7 -.7a1 1 0 0 1 1.217 -1.567l.102 .07z" fill="currentColor" stroke-width="0"><path d="M19.107 4.893a1 1 0 0 1 .083 1.32l-.083 .094l-.7 .7a1 1 0 0 1 -1.497 -1.32l.083 -.094l.7 -.7a1 1 0 0 1 1.414 0z" fill="currentColor" stroke-width="0"><path d="M12 2a1 1 0 0 1 .993 .883l.007 .117v1a1 1 0 0 1 -1.993 .117l-.007 -.117v-1a1 1 0 0 1 1 -1z" fill="currentColor" stroke-width="0"><path d="M12 7a5 5 0 1 1 -4.995 5.217l-.005 -.217l.005 -.217a5 5 0 0 1 4.995 -4.783z" fill="currentColor" stroke-width="0"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="z-10 text-neutral-400"><path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z"><button class="md:hidden text-gray-800 dark:text-gray-200 ml-auto" aria-label="Toggle menu"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-menu"><path d="M4 8l16 0"><path d="M4 16l16 0"><div class="hidden md:flex items-center justify-between gap-x-2"><div class="flex items-center justify-between gap-x-4 rounded-full px-2 py-2 relative transition-all ease-in-out duration-300 hover:cursor-pointer scale-90 bg-neutral-300 hover:bg-neutral-500"><div class="absolute top-1/2 transform -translate-y-1/2 w-9 h-9 rounded-full transition-all ease-linear duration-300"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="z-10 text-white"><path d="M12 19a1 1 0 0 1 .993 .883l.007 .117v1a1 1 0 0 1 -1.993 .117l-.007 -.117v-1a1 1 0 0 1 1 -1z" fill="currentColor" stroke-width="0"><path d="M18.313 16.91l.094 .083l.7 .7a1 1 0 0 1 -1.32 1.497l-.094 -.083l-.7 -.7a1 1 0 0 1 1.218 -1.567l.102 .07z" fill="currentColor" stroke-width="0"><path d="M7.007 16.993a1 1 0 0 1 .083 1.32l-.083 .094l-.7 .7a1 1 0 0 1 -1.497 -1.32l.083 -.094l.7 -.7a1 1 0 0 1 1.414 0z" fill="currentColor" stroke-width="0"><path d="M4 11a1 1 0 0 1 .117 1.993l-.117 .007h-1a1 1 0 0 1 -.117 -1.993l.117 -.007h1z" fill="currentColor" stroke-width="0"><path d="M21 11a1 1 0 0 1 .117 1.993l-.117 .007h-1a1 1 0 0 1 -.117 -1.993l.117 -.007h1z" fill="currentColor" stroke-width="0"><path d="M6.213 4.81l.094 .083l.7 .7a1 1 0 0 1 -1.32 1.497l-.094 -.083l-.7 -.7a1 1 0 0 1 1.217 -1.567l.102 .07z" fill="currentColor" stroke-width="0"><path d="M19.107 4.893a1 1 0 0 1 .083 1.32l-.083 .094l-.7 .7a1 1 0 0 1 -1.497 -1.32l.083 -.094l.7 -.7a1 1 0 0 1 1.414 0z" fill="currentColor" stroke-width="0"><path d="M12 2a1 1 0 0 1 .993 .883l.007 .117v1a1 1 0 0 1 -1.993 .117l-.007 -.117v-1a1 1 0 0 1 1 -1z" fill="currentColor" stroke-width="0"><path d="M12 7a5 5 0 1 1 -4.995 5.217l-.005 -.217l.005 -.217a5 5 0 0 1 4.995 -4.783z" fill="currentColor" stroke-width="0"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="z-10 text-neutral-400"><path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z"><button class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-neutral-950 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 dark:ring-offset-neutral-950 dark:focus-visible:ring-neutral-300 bg-neutral-900 text-neutral-50 hover:bg-neutral-900/90 dark:bg-neutral-50 dark:text-neutral-900 dark:hover:bg-neutral-50/90 h-9 px-3 rounded-lg transition-all hover:scale-110 duration-700">Get Started<div class="w-[90%] sm:w-[95%] lg:w-[80%] xl:w-[75%] h-full flex flex-col items-center justify-center mx-auto"><section class="w-full py-[6em] md:py-[6em] px-4 md:px-8"><div class="max-w-7xl mx-auto flex flex-col items-center text-center"><span class="flex items-center justify-center ransition-all hover:scale-110 duration-700"><img alt="PayPerQ Logo" loading="lazy" width="64" height="64" decoding="async" data-nimg="1" class="object-contain mb-4 mr-4" style="color:transparent" srcSet="/_next/image?url=%2Fflame2.png&w=64&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1x, /_next/image?url=%2Fflame2.png&w=128&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2x" src="/_next/image?url=%2Fflame2.png&w=128&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><h1 class="__className_b77edb text-5xl md:text-6xl font-bold leading-tight mb-6 t"><span class="bg-clip-text font-bold text-transparent bg-gradient-to-tr from-yellow-300 to-red-700">PayPerQ<p class="w-full text-lg md:text-xl text-gray-600 dark:text-gray-300 max-w-3xl mb-10 transition-all hover:scale-110 duration-700">Get instant access to hundreds of powerful AI models.
No subscriptions. No registration required.

<div class="w-full flex items-center justify-center flex-col mb-10"><div class="h-64 w-full animate-pulse bg-gray-200 dark:bg-gray-700 rounded-lg"><div class="flex flex-col w-full sm:flex-row gap-4 md:-mt-12 mb-6 z-10"><div class="w-full max-w-3xl mx-auto px-4 py-6"><p class="md:w-full text-lg md:text-xl text-gray-600 dark:text-gray-300 max-w-3xl mb-2 transition-all hover:scale-110 duration-700">Use free model to get started.

<div class="flex flex-col w-full sm:flex-row gap-3"><input class="flex w-full rounded-md bg-white px-3 py-2 ring-offset-white file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-neutral-500 focus-visible:outline-none focus-visible:ring-neutral-950 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-neutral-950 dark:ring-offset-neutral-950 dark:placeholder:text-neutral-400 dark:focus-visible:ring-neutral-300 flex-1 h-12 sm:h-14 text-base sm:text-lg border-2 border-neutral-300 dark:border-neutral-700 focus:border-yellow-400 dark:focus:border-yellow-500 focus:outline-none focus-visible:ring-0 focus-visible:ring-offset-0" placeholder="Type your question here..." aria-label="Query field" value=""/><button class="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm ring-offset-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-neutral-950 focus-visible:ring-offset-2 disabled:pointer-events-none dark:ring-offset-neutral-950 dark:focus-visible:ring-neutral-300 bg-neutral-900 hover:bg-neutral-900/90 dark:bg-neutral-50 dark:text-neutral-900 dark:hover:bg-neutral-50/90 py-2 h-12 sm:h-14 px-6 sm:px-8 bg-gradient-to-tr from-yellow-300 to-red-700 hover:scale-105 transition-transform text-white font-semibold disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:scale-100" disabled=""><svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6 transition-all duration-300" viewBox="0 0 1024 1024"><path fill="currentColor" d="M340.864 149.312a30.59 30.59 0 0 0 0 42.752L652.736 512L340.864 831.872a30.59 30.59 0 0 0 0 42.752a29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z"><div class="flex flex-col sm:flex-row gap-4 mt-18 md:-mt-18 z-10"><a target="_blank" rel="noopener noreferrer" href="/pricing"><button class="inline-flex items-center justify-center whitespace-nowrap text-sm ring-offset-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-neutral-950 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 dark:ring-offset-neutral-950 dark:focus-visible:ring-neutral-300 border border-neutral-200 bg-white hover:bg-neutral-100 hover:text-neutral-900 dark:border-neutral-800 dark:bg-neutral-950 dark:hover:bg-neutral-800 dark:hover:text-neutral-50 h-11 px-8 font-medium rounded-lg transition-all hover:scale-110 duration-700">View Pricing<div class="w-full bg-gray-100 dark:bg-[#282424]"><div class="w-[90%] sm:w-[95%] lg:w-[80%] xl:w-[75%] h-full flex flex-col items-center justify-center mx-auto"><section class="w-full py-24 md:py-40 px-4 md:px-8"><div class="max-w-7xl mx-auto"><h2 class="__className_b77edb text-3xl font-bold text-center mb-4 transition-all hover:scale-110 duration-700">Access to Hundreds of AI Models<p class="text-center text-gray-600 dark:text-gray-300 max-w-3xl mx-auto mb-12">Choose from industry-leading AI models for text, images, and video generation

<div class="flex items-center justify-center p-8 mb-36 md:mb-0"><div class="text-center max-w-4xl mx-auto"><div class="grid grid-cols-2 md:grid-cols-4 gap-12 md:gap-24 relative h-32"><div class="relative"><div class="\n transform transition-all ease-in-out cursor-pointer scale-75 md:scale-100\n false\n opacity-0 translate-y-16 scale-95 duration-700\n " style="transition-delay:0ms"><div class=" overflow-hidden rounded-2xl backdrop-blur-sm p-6 shadow-2xl hover:shadow-cyan-500/20 transition-all duration-300 hover:border-white/20 w-24 h-24 flex items-center justify-center "><img alt="OpenAI" loading="lazy" decoding="async" data-nimg="fill" class="object-contain" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="/openai-icon.svg"/><div class="relative"><div class="\n transform transition-all ease-in-out cursor-pointer scale-75 md:scale-100\n false\n opacity-0 translate-y-16 scale-95 duration-700\n " style="transition-delay:150ms"><div class=" overflow-hidden rounded-2xl backdrop-blur-sm p-6 shadow-2xl hover:shadow-cyan-500/20 transition-all duration-300 hover:border-white/20 w-24 h-24 flex items-center justify-center "><img alt="Claude" loading="lazy" decoding="async" data-nimg="fill" class="object-contain" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="/claude-icon.svg"/><div class="relative"><div class="\n transform transition-all ease-in-out cursor-pointer scale-75 md:scale-100\n false\n opacity-0 translate-y-16 scale-95 duration-700\n " style="transition-delay:300ms"><div class=" overflow-hidden rounded-2xl backdrop-blur-sm p-6 shadow-2xl hover:shadow-cyan-500/20 transition-all duration-300 hover:border-white/20 w-24 h-24 flex items-center justify-center "><img alt="Mistral" loading="lazy" decoding="async" data-nimg="fill" class="object-contain" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="/mistral-icon.svg"/><div class="relative"><div class="\n transform transition-all ease-in-out cursor-pointer scale-75 md:scale-100\n false\n opacity-0 translate-y-16 scale-95 duration-700\n " style="transition-delay:450ms"><div class=" overflow-hidden rounded-2xl backdrop-blur-sm p-6 shadow-2xl hover:shadow-cyan-500/20 transition-all duration-300 hover:border-white/20 w-24 h-24 flex items-center justify-center "><img alt="Gemini" loading="lazy" decoding="async" data-nimg="fill" class="object-contain" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" sizes="(max-width: 768px) 100vw, 64px" srcSet="/_next/image?url=%2Fgemini-logo.png&w=640&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 640w, /_next/image?url=%2Fgemini-logo.png&w=750&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 750w, /_next/image?url=%2Fgemini-logo.png&w=828&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 828w, /_next/image?url=%2Fgemini-logo.png&w=1080&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1080w, /_next/image?url=%2Fgemini-logo.png&w=1200&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1200w, /_next/image?url=%2Fgemini-logo.png&w=1920&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1920w, /_next/image?url=%2Fgemini-logo.png&w=2048&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2048w, /_next/image?url=%2Fgemini-logo.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 3840w" src="/_next/image?url=%2Fgemini-logo.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><div class="text-center mt-14"><a target="_blank" rel="noopener noreferrer" href="/pricing"><button class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-neutral-950 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 dark:ring-offset-neutral-950 dark:focus-visible:ring-neutral-300 bg-neutral-900 text-neutral-50 hover:bg-neutral-900/90 dark:bg-neutral-50 dark:text-neutral-900 dark:hover:bg-neutral-50/90 h-10 px-4 py-2 rounded-lg transition-all hover:scale-110 duration-700">View All Models & Pricing<div class="w-[90%] sm:w-[95%] lg:w-[80%] xl:w-[75%] h-full flex flex-col items-center justify-center mx-auto"><section class="py-24 md:py-32 px-4 md:px-8"><div class="max-w-7xl mx-auto"><h2 class="__className_b77edb text-3xl font-bold text-center mb-4 transition-all hover:scale-110 duration-700">Generate Professional Content<p class="text-center text-gray-800 dark:text-gray-100 max-w-3xl mx-auto mb-12">Create high-quality content for various purposes with our AI models

<div class="grid grid-cols-1 md:grid-cols-3 gap-8"><div class="border border-neutral-200 bg-white text-neutral-950 shadow-sm dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50 overflow-hidden rounded-2xl transition-all hover:scale-105 duration-700"><div class="h-56 relative"><img alt="Text Generation" loading="lazy" decoding="async" data-nimg="fill" class="object-cover" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" sizes="100vw" srcSet="/_next/image?url=%2Fchat.png&w=640&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 640w, /_next/image?url=%2Fchat.png&w=750&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 750w, /_next/image?url=%2Fchat.png&w=828&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 828w, /_next/image?url=%2Fchat.png&w=1080&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1080w, /_next/image?url=%2Fchat.png&w=1200&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1200w, /_next/image?url=%2Fchat.png&w=1920&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1920w, /_next/image?url=%2Fchat.png&w=2048&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2048w, /_next/image?url=%2Fchat.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 3840w" src="/_next/image?url=%2Fchat.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><div class="p-6"><h3 class="text-xl font-semibold mb-2">Ask anything<p class="text-gray-600 dark:text-gray-300 mb-4">Get instant answers and expert insights from advanced AI models.

<div class="border border-neutral-200 bg-white text-neutral-950 shadow-sm dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50 overflow-hidden rounded-2xl transition-all hover:scale-105 duration-700"><div class="h-56 relative"><img alt="Image Generation" loading="lazy" decoding="async" data-nimg="fill" class="object-cover" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" sizes="100vw" srcSet="/_next/image?url=%2Fexample-image.png&w=640&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 640w, /_next/image?url=%2Fexample-image.png&w=750&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 750w, /_next/image?url=%2Fexample-image.png&w=828&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 828w, /_next/image?url=%2Fexample-image.png&w=1080&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1080w, /_next/image?url=%2Fexample-image.png&w=1200&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1200w, /_next/image?url=%2Fexample-image.png&w=1920&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1920w, /_next/image?url=%2Fexample-image.png&w=2048&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2048w, /_next/image?url=%2Fexample-image.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 3840w" src="/_next/image?url=%2Fexample-image.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><div class="p-6"><h3 class="text-xl font-semibold mb-2">Image Generation<p class="text-gray-600 dark:text-gray-300 mb-4">Create professional-quality designs and illustrations with AI

<div class="border border-neutral-200 bg-white text-neutral-950 shadow-sm dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50 overflow-hidden rounded-2xl transition-all hover:scale-105 duration-700"><div class="h-56 relative"><video class="w-full" controls="" autoplay="" muted="" loop="" playsinline="" style="max-height:30vh;object-fit:contain"><source src="/veo3_example.mp4" type="video/mp4"/>Your browser does not support the video tag.<div class="p-6"><h3 class="text-xl font-semibold mb-2">HD Video Creation<p class="text-gray-600 dark:text-gray-300 mb-4">Create high-resolution, dynamic videos with state-of-the-art models

<div class="w-full bg-gray-100 dark:bg-[#282424]"><div class="w-[90%] sm:w-[95%] lg:w-[80%] xl:w-[75%] h-full flex flex-col items-center justify-center mx-auto"><section class="py-24 md:py-32 px-4 md:px-8"><div class="max-w-7xl mx-auto"><h2 class="__className_b77edb text-3xl font-bold text-center mb-4 transition-all hover:scale-110 duration-700 w-11/12">What Our Customers Say<p class="text-center text-gray-800 dark:text-gray-100 max-w-3xl mx-auto mb-12">Don't just take our word for it. Here's what users think about PayPerQ

<div class="grid grid-cols-1 md:grid-cols-2 gap-x-6 gap-y-0">
<div class="h-96 w-full animate-pulse bg-gray-200 dark:bg-gray-700 rounded-lg">
<div class="h-96 w-full animate-pulse bg-gray-200 dark:bg-gray-700 rounded-lg">
<div class="h-96 w-full animate-pulse bg-gray-200 dark:bg-gray-700 rounded-lg"><div class="w-[90%] sm:w-[95%] lg:w-[80%] xl:w-[75%] h-full flex flex-col items-center justify-center mx-auto"><section class="py-24 md:py-32 px-4 md:px-8"><div class="max-w-7xl mx-auto"><div class="flex flex-col md:flex-row items-center justify-center gap-x-2 mx-auto mb-12 transition-all hover:scale-110 duration-700"><h2 class="__className_b77edb text-3xl font-bold text-center">Why Choose<div class="flex items-center gap-x-2"><span class="__className_b77edb text-3xl font-bold text-center"><span class="bg-clip-text font-bold text-transparent bg-gradient-to-tr from-yellow-300 to-red-700">PayPerQ<img alt="PayPerQ Logo" loading="lazy" width="32" height="32" decoding="async" data-nimg="1" class="object-contain" style="color:transparent" srcSet="/_next/image?url=%2Fflame2.png&w=32&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1x, /_next/image?url=%2Fflame2.png&w=64&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2x" src="/_next/image?url=%2Fflame2.png&w=64&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><div class="grid grid-cols-1 md:grid-cols-3 gap-6"><div class="bg-gray-100 border border-gray-300 dark:border-none dark:bg-[#282424] p-6 rounded-xl shadow-sm transition-all hover:scale-105 duration-700"><div class="w-12 h-12 bg-orange-100 dark:bg-orange-600 rounded-full flex items-center justify-center mb-4"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-orange-800 dark:text-orange-100"><path d="M7 8l-4 4l4 4"><path d="M17 8l4 4l-4 4"><path d="M14 4l-4 16"><h3 class="text-xl font-semibold mb-2">All of the latest and greatest models<p class="text-gray-600 dark:text-gray-300 text-sm">Access to Text, Image, and Video models from all of the leading companies including OpenAI, Anthropic, Perplexity, Meta, and many more.

<div class="bg-gray-100 border border-gray-300 dark:border-none dark:bg-[#282424] p-6 rounded-xl shadow-sm transition-all hover:scale-105 duration-700"><div class="w-12 h-12 bg-orange-100 dark:bg-orange-600 rounded-full flex items-center justify-center mb-4"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-orange-800 dark:text-orange-100"><path d="M17.1 8.648a.568 .568 0 0 1 -.761 .011a5.682 5.682 0 0 0 -3.659 -1.34c-1.102 0 -2.205 .363 -2.205 1.374c0 1.023 1.182 1.364 2.546 1.875c2.386 .796 4.363 1.796 4.363 4.137c0 2.545 -1.977 4.295 -5.204 4.488l-.295 1.364a.557 .557 0 0 1 -.546 .443h-2.034l-.102 -.011a.568 .568 0 0 1 -.432 -.67l.318 -1.444a7.432 7.432 0 0 1 -3.273 -1.784v-.011a.545 .545 0 0 1 0 -.773l1.137 -1.102c.214 -.2 .547 -.2 .761 0a5.495 5.495 0 0 0 3.852 1.5c1.478 0 2.466 -.625 2.466 -1.614c0 -.989 -1 -1.25 -2.886 -1.954c-2 -.716 -3.898 -1.728 -3.898 -4.091c0 -2.75 2.284 -4.091 4.989 -4.216l.284 -1.398a.545 .545 0 0 1 .545 -.432h2.023l.114 .012a.544 .544 0 0 1 .42 .647l-.307 1.557a8.528 8.528 0 0 1 2.818 1.58l.023 .022c.216 .228 .216 .569 0 .773l-1.057 1.057z"><h3 class="text-xl font-semibold mb-2">Pay per use, no subscriptions<p class="text-gray-600 dark:text-gray-300 text-sm">Start by topping up as little 10 cents via crypto or credit card. Pay per query!

<div class="bg-gray-100 border border-gray-300 dark:border-none dark:bg-[#282424] p-6 rounded-xl shadow-sm transition-all hover:scale-105 duration-700"><div class="w-12 h-12 bg-orange-100 dark:bg-orange-600 rounded-full flex items-center justify-center mb-4"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-orange-800 dark:text-orange-100"><path d="M3 11h18"><path d="M5 11v-4a3 3 0 0 1 3 -3h8a3 3 0 0 1 3 3v4"><path d="M7 17m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"><path d="M17 17m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"><path d="M10 17h4"><h3 class="text-xl font-semibold mb-2">Choose your privacy level<p class="text-gray-600 dark:text-gray-300 text-sm">No email signup required. All conversational data can optionally be stored on your device. Account creation also possible for increased convenience.

<div class="bg-gray-100 border border-gray-300 dark:border-none dark:bg-[#282424] p-6 rounded-xl shadow-sm transition-all hover:scale-105 duration-700"><div class="w-12 h-12 bg-orange-100 dark:bg-orange-600 rounded-full flex items-center justify-center mb-4"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-orange-800 dark:text-orange-100"><path d="M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0"><path d="M14.8 9a2 2 0 0 0 -1.8 -1h-2a2 2 0 1 0 0 4h2a2 2 0 1 1 0 4h-2a2 2 0 0 1 -1.8 -1"><path d="M12 7v10"><h3 class="text-xl font-semibold mb-2">The average user spends around 2 cents per query<p class="text-gray-600 dark:text-gray-300 text-sm">Smaller questions/answers cost less, larger questions/answers cost more! Makes sense!

<div class="bg-gray-100 border border-gray-300 dark:border-none dark:bg-[#282424] p-6 rounded-xl shadow-sm transition-all hover:scale-105 duration-700"><div class="w-12 h-12 bg-orange-100 dark:bg-orange-600 rounded-full flex items-center justify-center mb-4"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-orange-800 dark:text-orange-100"><path d="M11.998 2l.118 .007l.059 .008l.061 .013l.111 .034a.993 .993 0 0 1 .217 .112l.104 .082l.255 .218a11 11 0 0 0 7.189 2.537l.342 -.01a1 1 0 0 1 1.005 .717a13 13 0 0 1 -9.208 16.25a1 1 0 0 1 -.502 0a13 13 0 0 1 -9.209 -16.25a1 1 0 0 1 1.005 -.717a11 11 0 0 0 7.531 -2.527l.263 -.225l.096 -.075a.993 .993 0 0 1 .217 -.112l.112 -.034a.97 .97 0 0 1 .119 -.021l.115 -.007zm3.71 7.293a1 1 0 0 0 -1.415 0l-3.293 3.292l-1.293 -1.292l-.094 -.083a1 1 0 0 0 -1.32 1.497l2 2l.094 .083a1 1 0 0 0 1.32 -.083l4 -4l.083 -.094a1 1 0 0 0 -.083 -1.32z" fill="currentColor" stroke-width="0"><h3 class="text-xl font-semibold mb-2">The average user tries out AI models from three different companies<p class="text-gray-600 dark:text-gray-300 text-sm">Chat, image, and video options from all the leading AI companies.

<div class="bg-gray-100 border border-gray-300 dark:border-none dark:bg-[#282424] p-6 rounded-xl shadow-sm transition-all hover:scale-105 duration-700"><div class="w-12 h-12 bg-orange-100 dark:bg-orange-600 rounded-full flex items-center justify-center mb-4"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-orange-800 dark:text-orange-100"><path d="M17 8v-3a1 1 0 0 0 -1 -1h-10a2 2 0 0 0 0 4h12a1 1 0 0 1 1 1v3m0 4v3a1 1 0 0 1 -1 1h-12a2 2 0 0 1 -2 -2v-12"><path d="M20 12v4h-4a2 2 0 0 1 0 -4h4"><h3 class="text-xl font-semibold mb-2">The average user spends only $4 per month!<p class="text-gray-600 dark:text-gray-300 text-sm">Escape the subscription paradigm and pay only for what you use!

<div class="w-full bg-gray-100 dark:bg-[#282424]"><div class="w-[90%] sm:w-[95%] lg:w-[80%] xl:w-[75%] h-full flex flex-col items-center justify-center mx-auto"><section class="py-24 md:py-32 px-4 md:px-8"><div class="max-w-7xl mx-auto"><h2 class="__className_b77edb text-3xl font-bold text-center mb-4">Use Cases<p class="text-center text-gray-600 dark:text-gray-300 max-w-3xl mx-auto mb-12">Discover how PayPerQ can enhance your workflow across various domains

<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"><div class="border border-neutral-200 bg-white text-neutral-950 shadow-sm dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50 rounded-xl transition-all hover:scale-105 duration-700"><div class="p-6"><div class="mb-4 text-blue-500"><svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"><h3 class="text-xl font-semibold mb-2">Content Creation<p class="text-gray-600 dark:text-gray-300 text-sm">Generate blog posts, marketing copy, and creative content with AI assistance to enhance productivity.

<div class="border border-neutral-200 bg-white text-neutral-950 shadow-sm dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50 rounded-xl transition-all hover:scale-105 duration-700"><div class="p-6"><div class="mb-4 text-green-500"><svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4"><h3 class="text-xl font-semibold mb-2">Software Development<p class="text-gray-600 dark:text-gray-300 text-sm">Accelerate coding tasks, debug issues, and get explanations of complex code using specialized AI models.

<div class="border border-neutral-200 bg-white text-neutral-950 shadow-sm dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50 rounded-xl transition-all hover:scale-105 duration-700"><div class="p-6"><div class="mb-4 text-purple-500"><svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 13.255A23.931 23.931 0 0112 15c-3.183 0-6.22-.62-9-1.745M16 6V4a2 2 0 00-2-2h-4a2 2 0 00-2 2v2m4 6h.01M5 20h14a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"><h3 class="text-xl font-semibold mb-2">Business Analytics<p class="text-gray-600 dark:text-gray-300 text-sm">Process and analyze data, generate reports, and derive actionable insights for better business decisions.

<div class="border border-neutral-200 bg-white text-neutral-950 shadow-sm dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50 rounded-xl transition-all hover:scale-105 duration-700"><div class="p-6"><div class="mb-4 text-red-500"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="w-8 h-8"><path d="M18 3a5 5 0 0 1 5 5v8a5 5 0 0 1 -5 5h-12a5 5 0 0 1 -5 -5v-8a5 5 0 0 1 5 -5zm-9 6v6a1 1 0 0 0 1.514 .857l5 -3a1 1 0 0 0 0 -1.714l-5 -3a1 1 0 0 0 -1.514 .857z" fill="currentColor" stroke-width="0"><h3 class="text-xl font-semibold mb-2">Media Production<p class="text-gray-600 dark:text-gray-300 text-sm">Create stunning visuals, edit images, and generate video content for marketing and social media.

<div class="border border-neutral-200 bg-white text-neutral-950 shadow-sm dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50 rounded-xl transition-all hover:scale-105 duration-700"><div class="p-6"><div class="mb-4 text-yellow-500"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="w-8 h-8"><path d="M14 3v4a1 1 0 0 0 1 1h4"><path d="M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z"><path d="M9 17l0 -5"><path d="M12 17l0 -1"><path d="M15 17l0 -3"><h3 class="text-xl font-semibold mb-2">Analyze documents<p class="text-gray-600 dark:text-gray-300 text-sm">Extract insights from any text

<div class="border border-neutral-200 bg-white text-neutral-950 shadow-sm dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50 rounded-xl transition-all hover:scale-105 duration-700"><div class="p-6"><div class="mb-4 text-indigo-500"><svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"><h3 class="text-xl font-semibold mb-2">Research & Innovation<p class="text-gray-600 dark:text-gray-300 text-sm">Accelerate research, brainstorm ideas, and explore new concepts with AI-powered assistance.

<div class="w-[90%] sm:w-[95%] lg:w-[80%] xl:w-[75%] h-full flex flex-col items-center justify-center mx-auto"><section class="py-24 md:py-32 px-4 md:px-8"><div class="max-w-7xl mx-auto"><h2 class="__className_b77edb text-3xl font-bold text-center mb-4 transition-all hover:scale-110 duration-700">Integrate <span class="bg-clip-text font-bold text-transparent bg-gradient-to-tr from-yellow-300 to-red-700">PayPerQ via API<p class="text-center text-gray-800 dark:text-gray-100 max-w-3xl mx-auto mb-12">Generate an API key to integrate PayPerQ with your platform.

<div class="grid grid-cols-1 lg:grid-cols-2 gap-8 mb-12">
<h3 class="text-xl font-semibold mb-4">OpenAI-Compatible API<p class="text-gray-600 dark:text-gray-300 mb-6">Our API is fully compatible with OpenAI standards, making it easy to integrate into existing applications that already use OpenAI. Simply change the API endpoint and key to start using PayPerQ.

<pre class="border border-gray-200 dark:border-none bg-gray-100 dark:bg-[#282424] p-4 rounded-lg text-sm overflow-x-auto mb-6"><code class="text-gray-800 dark:text-gray-200">curl https://api.ppq.ai/chat/completions -H "Content-Type: application/json" -H "Authorization: Bearer ppq_wn9nfzlit5" -d '{\n "model": "gpt-5",\n "messages": [{"role": "user", "content": "Hello, how are you?"}]\n }'<a target="_blank" rel="noopener noreferrer" href="/api-docs"><button class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-neutral-950 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 dark:ring-offset-neutral-950 dark:focus-visible:ring-neutral-300 bg-neutral-900 text-neutral-50 hover:bg-neutral-900/90 dark:bg-neutral-50 dark:text-neutral-900 dark:hover:bg-neutral-50/90 h-10 px-4 py-2 rounded-lg transition-all hover:scale-110 duration-700">View Full API Documentation
<div class="border border-gray-200 dark:border-none bg-gray-100 dark:bg-[#282424] p-6 rounded-lg"><h3 class="text-xl font-semibold mb-4">Popular Integrations<p class="text-gray-600 dark:text-gray-300 mb-6">PayPerQ works seamlessly with popular AI development tools. Learn how to set up with:

<div class="grid grid-cols-2 md:grid-cols-3 gap-4"><a class="relative bg-white dark:bg-gray-700 p-4 rounded-lg shadow-sm text-center hover:shadow-md transition-all hover:scale-105 duration-700 cursor-pointer" target="_blank" rel="noopener noreferrer" href="https://ppq.ai/blog/using-cline-with-payperq"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="absolute top-2 right-2"><path d="M12 6h-6a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-6"><path d="M11 13l9 -9"><path d="M15 4h5v5"><div class="w-12 h-12 mx-auto mb-2 relative rounded-lg overflow-hidden"><img alt="Cline" loading="lazy" decoding="async" data-nimg="fill" class="object-contain bg-black p-1.5" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" sizes="100vw" srcSet="/_next/image?url=%2Fcline-logo.png&w=640&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 640w, /_next/image?url=%2Fcline-logo.png&w=750&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 750w, /_next/image?url=%2Fcline-logo.png&w=828&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 828w, /_next/image?url=%2Fcline-logo.png&w=1080&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1080w, /_next/image?url=%2Fcline-logo.png&w=1200&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1200w, /_next/image?url=%2Fcline-logo.png&w=1920&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1920w, /_next/image?url=%2Fcline-logo.png&w=2048&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2048w, /_next/image?url=%2Fcline-logo.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 3840w" src="/_next/image?url=%2Fcline-logo.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><p class="font-medium">Cline

<a class="relative bg-white dark:bg-gray-700 p-4 rounded-lg shadow-sm text-center hover:shadow-md transition-all hover:scale-105 duration-700 cursor-pointer" target="_blank" rel="noopener noreferrer" href="https://ppq.ai/blog/using-aider-with-payperq"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="absolute top-2 right-2"><path d="M12 6h-6a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-6"><path d="M11 13l9 -9"><path d="M15 4h5v5"><div class="w-12 h-12 mx-auto mb-2 relative"><img alt="Aider" loading="lazy" decoding="async" data-nimg="fill" class="object-contain" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="/aider-logo.svg"/><p class="font-medium">Aider

<a class="relative bg-white dark:bg-gray-700 p-4 rounded-lg shadow-sm text-center hover:shadow-md transition-all hover:scale-105 duration-700 cursor-pointer" target="_blank" rel="noopener noreferrer" href="https://ppq.ai/blog/using-goose-with-payperq"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="absolute top-2 right-2"><path d="M12 6h-6a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-6"><path d="M11 13l9 -9"><path d="M15 4h5v5"><div class="w-12 h-12 mx-auto mb-2 relative rounded-lg overflow-hidden"><img alt="Goose" loading="lazy" decoding="async" data-nimg="fill" class="object-contain bg-black" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" sizes="100vw" srcSet="/_next/image?url=%2Fgoose-logo_dark.png&w=640&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 640w, /_next/image?url=%2Fgoose-logo_dark.png&w=750&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 750w, /_next/image?url=%2Fgoose-logo_dark.png&w=828&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 828w, /_next/image?url=%2Fgoose-logo_dark.png&w=1080&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1080w, /_next/image?url=%2Fgoose-logo_dark.png&w=1200&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1200w, /_next/image?url=%2Fgoose-logo_dark.png&w=1920&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1920w, /_next/image?url=%2Fgoose-logo_dark.png&w=2048&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2048w, /_next/image?url=%2Fgoose-logo_dark.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 3840w" src="/_next/image?url=%2Fgoose-logo_dark.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><p class="font-medium">Goose

<a class="relative bg-white dark:bg-gray-700 p-4 rounded-lg shadow-sm text-center hover:shadow-md transition-all hover:scale-105 duration-700 cursor-pointer" target="_blank" rel="noopener noreferrer" href="https://ppq.ai/blog/using-openwebui-with-payperq"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="absolute top-2 right-2"><path d="M12 6h-6a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-6"><path d="M11 13l9 -9"><path d="M15 4h5v5"><div class="w-12 h-12 mx-auto mb-2 relative"><img alt="OpenWebUI" loading="lazy" decoding="async" data-nimg="fill" class="object-contain" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" sizes="100vw" srcSet="/_next/image?url=%2Fopenwebui-logo.png&w=640&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 640w, /_next/image?url=%2Fopenwebui-logo.png&w=750&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 750w, /_next/image?url=%2Fopenwebui-logo.png&w=828&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 828w, /_next/image?url=%2Fopenwebui-logo.png&w=1080&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1080w, /_next/image?url=%2Fopenwebui-logo.png&w=1200&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1200w, /_next/image?url=%2Fopenwebui-logo.png&w=1920&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1920w, /_next/image?url=%2Fopenwebui-logo.png&w=2048&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2048w, /_next/image?url=%2Fopenwebui-logo.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 3840w" src="/_next/image?url=%2Fopenwebui-logo.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><p class="font-medium">OpenWebUI

<a class="relative bg-white dark:bg-gray-700 p-4 rounded-lg shadow-sm text-center hover:shadow-md transition-all hover:scale-105 duration-700 cursor-pointer" target="_blank" rel="noopener noreferrer" href="https://ppq.ai/blog/using-roo-with-payperq"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="absolute top-2 right-2"><path d="M12 6h-6a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-6"><path d="M11 13l9 -9"><path d="M15 4h5v5"><div class="w-12 h-12 mx-auto mb-2 relative rounded-lg overflow-hidden"><img alt="Roo" loading="lazy" decoding="async" data-nimg="fill" class="object-contain" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" sizes="100vw" srcSet="/_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F211522643%3Fs%3D48%26v%3D4&w=640&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 640w, /_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F211522643%3Fs%3D48%26v%3D4&w=750&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 750w, /_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F211522643%3Fs%3D48%26v%3D4&w=828&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 828w, /_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F211522643%3Fs%3D48%26v%3D4&w=1080&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1080w, /_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F211522643%3Fs%3D48%26v%3D4&w=1200&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1200w, /_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F211522643%3Fs%3D48%26v%3D4&w=1920&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1920w, /_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F211522643%3Fs%3D48%26v%3D4&w=2048&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2048w, /_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F211522643%3Fs%3D48%26v%3D4&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 3840w" src="/_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F211522643%3Fs%3D48%26v%3D4&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><p class="font-medium">Roo

<a class="relative bg-white dark:bg-gray-700 p-4 rounded-lg shadow-sm text-center hover:shadow-md transition-all hover:scale-105 duration-700 cursor-pointer" target="_blank" rel="noopener noreferrer" href="https://ppq.ai/blog/using-mkstacks-with-payperq"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="absolute top-2 right-2"><path d="M12 6h-6a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-6"><path d="M11 13l9 -9"><path d="M15 4h5v5"><div class="w-12 h-12 mx-auto mb-2 relative rounded-lg overflow-hidden"><img alt="MKStack" loading="lazy" decoding="async" data-nimg="fill" class="object-contain" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" sizes="100vw" srcSet="/_next/image?url=%2Fmkstack-logo.png&w=640&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 640w, /_next/image?url=%2Fmkstack-logo.png&w=750&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 750w, /_next/image?url=%2Fmkstack-logo.png&w=828&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 828w, /_next/image?url=%2Fmkstack-logo.png&w=1080&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1080w, /_next/image?url=%2Fmkstack-logo.png&w=1200&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1200w, /_next/image?url=%2Fmkstack-logo.png&w=1920&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1920w, /_next/image?url=%2Fmkstack-logo.png&w=2048&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2048w, /_next/image?url=%2Fmkstack-logo.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 3840w" src="/_next/image?url=%2Fmkstack-logo.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><p class="font-medium">MKStack

<div class="w-full bg-gray-100 dark:bg-[#282424]"><div class="w-[90%] sm:w-[95%] lg:w-[80%] xl:w-[75%] h-full flex flex-col items-center justify-center mx-auto"><section class="py-24 md:py-32 px-4 md:px-8"><div class="max-w-7xl mx-auto"><h2 class="__className_b77edb text-3xl font-bold text-center mb-4 transition-all hover:scale-110 duration-700">From Our Blog<p class="text-center text-gray-600 dark:text-gray-300 max-w-3xl mx-auto mb-12">Stay updated with the latest news, insights, and tips from the AI world

<div class="grid grid-cols-1 md:grid-cols-3 gap-8"><div class="border border-neutral-200 bg-white text-neutral-950 shadow-sm dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50 overflow-hidden rounded-xl transition-all hover:scale-105 duration-700"><div class="h-48 relative"><img alt="AI Trends" loading="lazy" decoding="async" data-nimg="fill" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" sizes="100vw" srcSet="/_next/image?url=%2Fblog-post-1.png&w=640&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 640w, /_next/image?url=%2Fblog-post-1.png&w=750&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 750w, /_next/image?url=%2Fblog-post-1.png&w=828&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 828w, /_next/image?url=%2Fblog-post-1.png&w=1080&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1080w, /_next/image?url=%2Fblog-post-1.png&w=1200&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1200w, /_next/image?url=%2Fblog-post-1.png&w=1920&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1920w, /_next/image?url=%2Fblog-post-1.png&w=2048&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2048w, /_next/image?url=%2Fblog-post-1.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 3840w" src="/_next/image?url=%2Fblog-post-1.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><div class="p-6"><p class="text-sm text-gray-500 dark:text-gray-400 mb-2">September 17, 2025

<h3 class="text-xl font-semibold mb-2">SVG Creation - Benchmark Testing AI Models<p class="text-sm text-gray-600 dark:text-gray-300 mb-4">Discover how SVG generation serves as an effective method for benchmark testing AI models across code generation, creativity, and technical precision using text-based prompts.

<a class="text-blue-500 hover:underline font-medium" href="https://ppq.ai/blog/creating-svg-images-with-ai">Read More →<div class="border border-neutral-200 bg-white text-neutral-950 shadow-sm dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50 overflow-hidden rounded-xl transition-all hover:scale-105 duration-700"><div class="h-48 relative"><img alt="AI for Productivity" loading="lazy" decoding="async" data-nimg="fill" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" sizes="100vw" srcSet="/_next/image?url=%2Fblog-post-2.png&w=640&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 640w, /_next/image?url=%2Fblog-post-2.png&w=750&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 750w, /_next/image?url=%2Fblog-post-2.png&w=828&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 828w, /_next/image?url=%2Fblog-post-2.png&w=1080&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1080w, /_next/image?url=%2Fblog-post-2.png&w=1200&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1200w, /_next/image?url=%2Fblog-post-2.png&w=1920&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1920w, /_next/image?url=%2Fblog-post-2.png&w=2048&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2048w, /_next/image?url=%2Fblog-post-2.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 3840w" src="/_next/image?url=%2Fblog-post-2.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><div class="p-6"><p class="text-sm text-gray-500 dark:text-gray-400 mb-2">September 15, 2025

<h3 class="text-xl font-semibold mb-2">Introducing the PayPerQ Community Stats Dashboard<p class="text-sm text-gray-600 dark:text-gray-300 mb-4">Get real-time insights into AI model usage across the PayPerQ platform with our new comprehensive analytics dashboard showing trends in chat completion, image generation, and video generation.

<a class="text-blue-500 hover:underline font-medium" href="https://ppq.ai/blog/introducing-ppq-stats-dashboard">Read More →<div class="border border-neutral-200 bg-white text-neutral-950 shadow-sm dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50 overflow-hidden rounded-xl transition-all hover:scale-105 duration-700"><div class="h-48 relative"><img alt="AI Ethics" loading="lazy" decoding="async" data-nimg="fill" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" sizes="100vw" srcSet="/_next/image?url=%2Fblog-post-3.png&w=640&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 640w, /_next/image?url=%2Fblog-post-3.png&w=750&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 750w, /_next/image?url=%2Fblog-post-3.png&w=828&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 828w, /_next/image?url=%2Fblog-post-3.png&w=1080&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1080w, /_next/image?url=%2Fblog-post-3.png&w=1200&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1200w, /_next/image?url=%2Fblog-post-3.png&w=1920&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1920w, /_next/image?url=%2Fblog-post-3.png&w=2048&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2048w, /_next/image?url=%2Fblog-post-3.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 3840w" src="/_next/image?url=%2Fblog-post-3.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><div class="p-6"><p class="text-sm text-gray-500 dark:text-gray-400 mb-2">March 16, 2025

<h3 class="text-xl font-semibold mb-2">Introducing Deep Research<p class="text-sm text-gray-600 dark:text-gray-300 mb-4">Research complex topics online with AI-powered webscraping and reasoning

<a class="text-blue-500 hover:underline font-medium" href="https://ppq.ai/blog/introducing-deep-research">Read More →<div class="text-center mt-10"><a href="/blog"><button class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-neutral-950 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 dark:ring-offset-neutral-950 dark:focus-visible:ring-neutral-300 bg-neutral-900 text-neutral-50 hover:bg-neutral-900/90 dark:bg-neutral-50 dark:text-neutral-900 dark:hover:bg-neutral-50/90 h-10 px-4 py-2 rounded-lg transition-all hover:scale-110 duration-700">View All Blog Posts<div class="w-[90%] sm:w-[95%] lg:w-[80%] xl:w-[75%] h-full flex flex-col items-center justify-center mx-auto"><section class="py-24 md:py-32 px-4 md:px-8"><div class="max-w-7xl mx-auto"><h2 class="__className_b77edb text-3xl font-bold text-center mb-4 transition-all hover:scale-110 duration-700">Meet the <span class="bg-clip-text font-bold text-transparent bg-gradient-to-tr from-yellow-300 to-red-700">PayPerQ Team<div class="grid grid-cols-1 md:grid-cols-2 justify-around gap-x-36 gap-y-12 max-w-4xl mx-auto mt-12"><div class="rounded-lg border border-neutral-200 text-neutral-950 dark:border-neutral-800 dark:text-neutral-50 overflow-hidden border-none bg-inherit dark:bg-inherit shadow-none"><div class="flex flex-col items-center p-8"><div class="w-32 h-32 rounded-full overflow-hidden mb-6 flex items-center justify-center"><img alt="Matt Ahlborg" loading="lazy" width="128" height="128" decoding="async" data-nimg="1" class="object-cover" style="color:transparent" srcSet="/_next/image?url=%2Fmatt-ahlborg.jpg&w=128&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1x, /_next/image?url=%2Fmatt-ahlborg.jpg&w=256&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2x" src="/_next/image?url=%2Fmatt-ahlborg.jpg&w=256&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><h3 class="text-xl font-semibold">Matt Ahlborg<p class="text-neutral-500 dark:text-blue-400 mb-4">Founder

<div class="flex space-x-4"><a class="p-2 w-8 rounded-full bg-black transition-all hover:scale-110 duration-500" target="_blank" rel="noopener noreferrer" href="https://x.com/MattAhlborg"><img alt="x.com" loading="lazy" width="32" height="32" decoding="async" data-nimg="1" class="object-cover" style="color:transparent" srcSet="/_next/image?url=%2Fx-white-icon.png&w=32&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1x, /_next/image?url=%2Fx-white-icon.png&w=64&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2x" src="/_next/image?url=%2Fx-white-icon.png&w=64&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><a class="rounded-full transition-all hover:scale-110 duration-500" target="_blank" rel="noopener noreferrer" href="https://www.linkedin.com/in/mattahlborg/"><img alt="LinkedIn" loading="lazy" width="32" height="32" decoding="async" data-nimg="1" class="object-cover" style="color:transparent" srcSet="/_next/image?url=%2Flinkedin-logo.png&w=32&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1x, /_next/image?url=%2Flinkedin-logo.png&w=64&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2x" src="/_next/image?url=%2Flinkedin-logo.png&w=64&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><div class="rounded-lg border border-neutral-200 text-neutral-950 dark:border-neutral-800 dark:text-neutral-50 overflow-hidden border-none bg-inherit dark:bg-inherit shadow-none"><div class="flex flex-col items-center p-8"><div class="w-32 h-32 rounded-full overflow-hidden mb-6 flex items-center justify-center"><img alt="Rafael" loading="lazy" width="128" height="128" decoding="async" data-nimg="1" class="object-cover" style="color:transparent" srcSet="/_next/image?url=%2Fraf.jpeg&w=128&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1x, /_next/image?url=%2Fraf.jpeg&w=256&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2x" src="/_next/image?url=%2Fraf.jpeg&w=256&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><h3 class="text-xl font-semibold">Rafael Valverde<p class="text-neutral-500 dark:text-blue-400 mb-4">CTO

<div class="flex space-x-4"><a class="p-2 w-8 rounded-full bg-black transition-all hover:scale-110 duration-500" target="_blank" rel="noopener noreferrer" href="https://primal.net/p/nprofile1qqsqke4s2jgwktuxxz7syw0rxsnjyvx2p6q38s4kw0jparaapf66x6sqmnd0f"><img alt="primal.net" loading="lazy" width="32" height="32" decoding="async" data-nimg="1" class="object-cover" style="color:transparent" srcSet="/_next/image?url=%2Fnostr_logo.png&w=32&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1x, /_next/image?url=%2Fnostr_logo.png&w=64&"}

context_part | role=tool

{"success":false,"url":"https://docs.ppq.ai","method":"GET","status_code":0,"http_ok":false,"truncated":false,"bytes_received":0,"curl_error":"Could not resolve hostname","body":""}

context_part | role=tool

{"success":true,"url":"https://ppq.ai/api-docs","method":"GET","status_code":200,"http_ok":true,"truncated":true,"bytes_received":65536,"content_type":"text/html; charset=utf-8","body":"<html lang="en" dir="auto"><head><meta charSet="utf-8"/><meta name="description" content="PayPerQ's API documentation - OpenAI-compatible API for accessing chat, image, video, and audio AI models. Use with Claude Code, OpenWebUI, and other tools. Pay per use with crypto or credit card."/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="icon" href="/flame2.png"/><link rel="canonical" href="https://ppq.ai/api-docs"/><meta property="og:title" content="API Documentation | PayPerQ"/><meta property="og:description" content="PayPerQ API documentation - OpenAI-compatible API for accessing AI models. Use with Claude Code, OpenWebUI, and other tools. Pay per use with crypto."/><meta property="og:image" content="https://ppq.ai/ppqai-opengraph-banner.png"/><meta property="og:url" content="https://ppq.ai/api-docs"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="API Documentation | PayPerQ"/><meta name="twitter:description" content="PayPerQ API documentation - OpenAI-compatible API for accessing AI models. Use with Claude Code, OpenWebUI, and other tools. Pay per use with crypto."/><meta name="twitter:image" content="https://ppq.ai/ppqai-opengraph-banner.png"/><meta name="next-head-count" content="15"/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, user-scalable=no"/><meta name="apple-mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><meta name="mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-title" content="PayPerQ"/><link rel="manifest" href="/manifest.json"/><link rel="icon" type="image/png" href="/meta/favicon-48x48.png" sizes="48x48"/><link rel="icon" type="image/svg+xml" href="/meta/favicon.svg"/><link rel="shortcut icon" href="/meta/favicon.ico"/><link rel="apple-touch-icon" sizes="180x180" href="/meta/apple-touch-icon.png"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font="size-adjust"/><link rel="preload" href="/_next/static/media/9a4ee768fed045da-s.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font="size-adjust"/><link rel="preload" href="/_next/static/css/c6aee3ecd57785bc.css?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" as="style"/><link rel="stylesheet" href="/_next/static/css/c6aee3ecd57785bc.css?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" data-n-g=""/><link rel="preload" href="/_next/static/css/1fc2d64d8add863d.css?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" as="style"/><link rel="stylesheet" href="/_next/static/css/1fc2d64d8add863d.css?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" data-n-p=""/><noscript data-n-css=""><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"></script><script src="/_next/static/chunks/webpack-6bc0c9379ad92833.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/framework-d802a17e2a0a424c.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/main-d4e844f2dd99fdf0.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/pages/_app-8980ffa17da19ffa.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/3061-bb6086eafdf90c15.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/4026-f8cc79eef76d3160.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/834-c10e1e4a82491c86.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/7979-7c9b280e4cf8b74c.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/4010-e743d2cd2dd41193.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/8992-bc1cece335940e47.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/3342-5b7aa5b198dadd73.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/3742-ac26990f9b10db51.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/7856-3d91257d89c35c8d.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/2728-5bdab41a73784b0f.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/498-903bb33aeef5b17e.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/pages/api-docs-2967b88fde582dfb.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/xLFQ-gZQ6t91hfJoo0Zm7/_buildManifest.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/xLFQ-gZQ6t91hfJoo0Zm7/_ssgManifest.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script></head><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div id="__next"><div class="__className_f367f3"><div style="position:fixed;z-index:9999;top:16px;left:16px;right:16px;bottom:16px;pointer-events:none"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div class="min-h-screen bg-white dark:bg-[#212121]"><div class="max-w-6xl mx-auto px-4 py-8"><div class="flex items-center pb-6 gap-3"><a class="flex gap-2" href="/"><div style="opacity:0.9"><img alt="PayPerQ Logo" loading="lazy" width="26" height="26" decoding="async" data-nimg="1" style="color:transparent;object-fit:contain" srcSet="/_next/image?url=%2Fflame2.png&w=32&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1x, /_next/image?url=%2Fflame2.png&w=64&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2x" src="/_next/image?url=%2Fflame2.png&w=64&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><h1 class="__className_b77edb text-gray-900 dark:text-white text-[17px] font-extrabold">PayPerQ

<svg xmlns="http://www.w3.org/2000/svg" class="w-5 h-5" viewBox="0 0 1024 1024"><path fill="currentColor" d="M340.864 149.312a30.59 30.59 0 0 0 0 42.752L652.736 512L340.864 831.872a30.59 30.59 0 0 0 0 42.752a29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z">
<div class="text-xs lg:text-sm">API<div class="flex flex-col lg:flex-row gap-4"><div class="lg:sticky top-4 lg:h-fit"><ul class="flex min-w-[200px] text-sm lg:text-lg -translate-x-4 lg:translate-x-0 flex-row lg:flex-col overflow-x-auto"><li class="cursor-pointer rounded-md py-3 px-4 transition-colors whitespace-nowrap bg-gray-200 dark:bg-gray-800 font-semibold">Getting Started<li class="cursor-pointer rounded-md py-3 px-4 transition-colors whitespace-nowrap hover:bg-gray-200 dark:hover:bg-gray-800">Integrations<li class="cursor-pointer rounded-md py-3 px-4 transition-colors whitespace-nowrap hover:bg-gray-200 dark:hover:bg-gray-800">Chat Models<li class="cursor-pointer rounded-md py-3 px-4 transition-colors whitespace-nowrap hover:bg-gray-200 dark:hover:bg-gray-800">Speech-to-Text<li class="cursor-pointer rounded-md py-3 px-4 transition-colors whitespace-nowrap hover:bg-gray-200 dark:hover:bg-gray-800">Text-to-Speech<li class="cursor-pointer rounded-md py-3 px-4 transition-colors whitespace-nowrap hover:bg-gray-200 dark:hover:bg-gray-800">Image Generation<li class="cursor-pointer rounded-md py-3 px-4 transition-colors whitespace-nowrap hover:bg-gray-200 dark:hover:bg-gray-800">Video Generation<li class="cursor-pointer rounded-md py-3 px-4 transition-colors whitespace-nowrap hover:bg-gray-200 dark:hover:bg-gray-800">API Topups<li class="cursor-pointer rounded-md py-3 px-4 transition-colors whitespace-nowrap hover:bg-gray-200 dark:hover:bg-gray-800">API Keys<div class="flex-1 min-w-0 space-y-8 text-gray-800 dark:text-gray-200"><div id="getting-started">
<div class="flex items-center mb-4"><h2 class="text-xl lg:text-2xl font-bold text-black dark:text-neutral-200 mr-2">Welcome to the PayPerQ API!<img alt="Flame" loading="lazy" width="24" height="24" decoding="async" data-nimg="1" style="color:transparent;object-fit:contain" srcSet="/_next/image?url=%2Fflame2.png&w=32&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1x, /_next/image?url=%2Fflame2.png&w=48&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2x" src="/_next/image?url=%2Fflame2.png&w=48&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><p class="text-sm text-gray-500 dark:text-gray-400 mb-4">Our API is OpenAI Compatible, which means that you can plug it into hundreds of third party tools like Claude Code and OpenWebUI, even with non-OpenAI models. To check on costs, see <a class="text-blue-500 hover:underline" href="/account-activity">Account Activity.

For questions or support, please use the chat widget in the bottom right!

For AI agents and coding assistants, see our <a href="/llms.txt" class="text-blue-500 hover:underline">llms.txt.

<h3 class="text-lg font-semibold mb-2 text-black dark:text-neutral-200">Your API Key:<div class="bg-gray-100 dark:bg-gray-700 rounded p-4"><p class="text-sm text-gray-600 dark:text-gray-400">No API keys found. <a class="text-blue-500 hover:underline inline-flex items-center gap-1" href="/api-keys">Create your first API key<svg xmlns="http://www.w3.org/2000/svg" class="w-3 h-3" viewBox="0 0 1024 1024"><path fill="currentColor" d="M340.864 149.312a30.59 30.59 0 0 0 0 42.752L652.736 512L340.864 831.872a30.59 30.59 0 0 0 0 42.752a29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z">

<h3 class="text-lg font-semibold mb-2 text-black dark:text-neutral-200">Base URL<code class="bg-gray-100 dark:bg-gray-700 rounded p-2 block text-sm text-black dark:text-white">https://api.ppq.ai<p class="lg:text-sm text-gray-500 dark:text-gray-400 mt-2 mb-4 text-xs flex items-center"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-amber-500 mr-1 flex-shrink-0"><path d="M12 9v4"><path d="M10.363 3.591l-8.106 13.534a1.914 1.914 0 0 0 1.636 2.871h16.214a1.914 1.914 0 0 0 1.636 -2.87l-8.106 -13.536a1.914 1.914 0 0 0 -3.274 0z"><path d="M12 16h.01">This is the URL you want to set if plugging into a third party tool or software

<h3 class="text-lg font-semibold mb-2 text-black dark:text-neutral-200">Endpoint<code class="bg-gray-100 dark:bg-gray-700 rounded p-2 block text-sm text-black dark:text-white">POST https://api.ppq.ai/chat/completions<p class="lg:text-sm text-gray-500 dark:text-gray-400 mt-2 text-xs flex items-center"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-amber-500 mr-1 flex-shrink-0"><path d="M12 9v4"><path d="M10.363 3.591l-8.106 13.534a1.914 1.914 0 0 0 1.636 2.871h16.214a1.914 1.914 0 0 0 1.636 -2.87l-8.106 -13.536a1.914 1.914 0 0 0 -3.274 0z"><path d="M12 16h.01">This is the URL you want to set if you are calling our Chat API from custom code you've written.

<div id="integrations">
<h4 class="text-md font-semibold mt-4 mb-2 text-black dark:text-neutral-200">Popular Third Party Integration Tutorials:<div class="flex lg:text-sm text-gray-500 dark:text-gray-400 mt-2 mb-12 text-xs gap-6 lg:gap-8"><div class="w-fit"><a class="text-blue-500 hover:underline font-bold" href="/blog/using-openclaw-with-payperq">Set up with OpenClaw
<a class="text-blue-500 hover:underline font-bold" href="/blog/using-claude-code-with-payperq">Set up with Claude Code
<a class="text-blue-500 hover:underline" href="/blog/using-cline-with-payperq">Set up with Cline
<a class="text-blue-500 hover:underline" href="/blog/using-aider-with-payperq">Set up with Aider
<a class="text-blue-500 hover:underline" href="/blog/using-roo-with-payperq">Set up with Roo
<a class="text-blue-500 hover:underline font-bold" href="/blog/using-openwebui-with-payperq">Set up with OpenWebUI
<a class="text-blue-500 hover:underline" href="/blog/using-mkstacks-with-payperq">Set up with MKStacks
<a class="text-blue-500 hover:underline" href="/blog/using-msty-with-payperq">Set up with Msty
<a class="text-blue-500 hover:underline" href="/blog/using-rxresume-with-payperq">Set up with RxResume
<a class="text-blue-500 hover:underline" href="/blog/using-kilocode-with-payperq">Set up with Kilo Code
<a class="text-blue-500 hover:underline" href="/blog/using-janitorai-with-payperq">Set up with JanitorAI
<a class="text-blue-500 hover:underline font-bold" href="/blog/shakespeare-nostr-vibe-coding">Set up with Shakespeare
<a class="text-blue-500 hover:underline font-bold" href="/blog/using-opencode-with-payperq">Set up with OpenCode
<a class="text-blue-500 hover:underline" href="/blog/using-cursor-with-payperq">Set up with Cursor
<a class="text-blue-500 hover:underline font-bold" href="/blog/using-goose-with-payperq">Set up with Goose
<div id="chat-models">
<h2 class="text-lg lg:text-xl font-bold mb-2">Popular models<div class="flex relative mb-12 overflow-y-auto max-h-[70vh]"><div class="relative w-full overflow-auto"><table class="w-full caption-bottom text-sm"><thead class="[&_tr]:border-b sticky top-0 z-10 bg-white dark:bg-neutral-900"><tr class="border-b transition-colors hover:bg-neutral-100/50 data-[state=selected]:bg-neutral-100 dark:hover:bg-neutral-800/50 dark:data-[state=selected]:bg-neutral-800"><th class="h-10 px-3 text-left align-middle font-medium text-neutral-500 [&:has([role=checkbox])]:pr-0 dark:text-neutral-400"><div class="group flex items-center gap-1 cursor-pointer">Model Name<svg xmlns="http://www.w3.org/2000/svg" class="size-5 group-hover:scale-[120%] transition-all ease-in-out duration-300" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 15 12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9"><th class="h-10 px-3 text-left align-middle font-medium text-neutral-500 [&:has([role=checkbox])]:pr-0 dark:text-neutral-400"><div class="group flex items-center gap-1 cursor-pointer">Model ID<svg xmlns="http://www.w3.org/2000/svg" class="size-5 group-hover:scale-[120%] transition-all ease-in-out duration-300" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 15 12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9"><th class="h-10 px-3 text-left align-middle font-medium text-neutral-500 [&:has([role=checkbox])]:pr-0 dark:text-neutral-400"><div class="group flex items-center gap-1 cursor-pointer">Provider<svg xmlns="http://www.w3.org/2000/svg" class="size-5 group-hover:scale-[120%] transition-all ease-in-out duration-300" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 15 12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9"><th class="h-10 px-3 text-left align-middle font-medium text-neutral-500 [&:has([role=checkbox])]:pr-0 dark:text-neutral-400"><div class="group flex items-center gap-1 cursor-pointer">Max Context<svg xmlns="http://www.w3.org/2000/svg" class="size-5 group-hover:scale-[120%] transition-all ease-in-out duration-300" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 15 12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9"><th class="h-10 px-3 text-left align-middle font-medium text-neutral-500 [&:has([role=checkbox])]:pr-0 dark:text-neutral-400"><div class="group flex items-center gap-1 cursor-pointer">Date Added<svg xmlns="http://www.w3.org/2000/svg" class="size-5 group-hover:scale-[120%] transition-all ease-in-out duration-300" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 15 12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9"><th class="h-10 px-3 text-left align-middle font-medium text-neutral-500 [&:has([role=checkbox])]:pr-0 dark:text-neutral-400"><div class="group flex items-center gap-1 cursor-pointer">Input Rate<svg xmlns="http://www.w3.org/2000/svg" class="size-5 group-hover:scale-[120%] transition-all ease-in-out duration-300" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 15 12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9"><th class="h-10 px-3 text-left align-middle font-medium text-neutral-500 [&:has([role=checkbox])]:pr-0 dark:text-neutral-400"><div class="group flex items-center gap-1 cursor-pointer">Output Rate<svg xmlns="http://www.w3.org/2000/svg" class="size-5 group-hover:scale-[120%] transition-all ease-in-out duration-300" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 15 12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9"><th class="h-10 px-3 text-left align-middle font-medium text-neutral-500 [&:has([role=checkbox])]:pr-0 dark:text-neutral-400"><div class="group flex items-center gap-1 cursor-pointer">Average Cost<svg xmlns="http://www.w3.org/2000/svg" class="size-5 group-hover:scale-[120%] transition-all ease-in-out duration-300" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 15 12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9"><th class="h-10 px-3 text-left align-middle font-medium text-neutral-500 [&:has([role=checkbox])]:pr-0 dark:text-neutral-400"><div class="group flex items-center gap-1 cursor-pointer">Prompts / $1<svg xmlns="http://www.w3.org/2000/svg" class="size-5 group-hover:scale-[120%] transition-all ease-in-out duration-300" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 15 12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9"><tbody class="[&_tr:last-child]:border-0"><tr class="border-b transition-colors hover:bg-neutral-100/50 data-[state=selected]:bg-neutral-100 dark:hover:bg-neutral-800/50 dark:data-[state=selected]:bg-neutral-800"><td class="p-3 align-middle [&:has([role=checkbox])]:pr-0 text-left" colSpan="6">No models available<h2 class="text-lg lg:text-xl font-bold mb-2">All available text models (0)<div class="mb-4"><div class="relative flex items-center"><input class="w-full flex-1 rounded-md border border-neutral-300 bg-white px-4 py-3 pr-10 text-[14px] leading-3 text-neutral-900 placeholder-neutral-500 focus:border-neutral-500 focus:outline-none dark:border-neutral-700 dark:bg-[#202123] dark:text-white dark:placeholder-neutral-400 dark:focus:border-neutral-400" type="text" placeholder="Search models…" value=""/><div class="flex relative mb-12 overflow-y-auto max-h-[70vh]"><div class="relative w-full overflow-auto"><table class="w-full caption-bottom text-sm"><thead class="[&_tr]:border-b sticky top-0 z-10 bg-white dark:bg-neutral-900"><tr class="border-b transition-colors hover:bg-neutral-100/50 data-[state=selected]:bg-neutral-100 dark:hover:bg-neutral-800/50 dark:data-[state=selected]:bg-neutral-800"><th class="h-10 px-3 text-left align-middle font-medium text-neutral-500 [&:has([role=checkbox])]:pr-0 dark:text-neutral-400"><div class="group flex items-center gap-1 cursor-pointer">Model Name<svg xmlns="http://www.w3.org/2000/svg" class="size-5 group-hover:scale-[120%] transition-all ease-in-out duration-300" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 15 12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9"><th class="h-10 px-3 text-left align-middle font-medium text-neutral-500 [&:has([role=checkbox])]:pr-0 dark:text-neutral-400"><div class="group flex items-center gap-1 cursor-pointer">Model ID<svg xmlns="http://www.w3.org/2000/svg" class="size-5 group-hover:scale-[120%] transition-all ease-in-out duration-300" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 15 12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9"><th class="h-10 px-3 text-left align-middle font-medium text-neutral-500 [&:has([role=checkbox])]:pr-0 dark:text-neutral-400"><div class="group flex items-center gap-1 cursor-pointer">Provider<svg xmlns="http://www.w3.org/2000/svg" class="size-5 group-hover:scale-[120%] transition-all ease-in-out duration-300" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 15 12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9"><th class="h-10 px-3 text-left align-middle font-medium text-neutral-500 [&:has([role=checkbox])]:pr-0 dark:text-neutral-400"><div class="group flex items-center gap-1 cursor-pointer">Max Context<svg xmlns="http://www.w3.org/2000/svg" class="size-5 group-hover:scale-[120%] transition-all ease-in-out duration-300" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 15 12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9"><th class="h-10 px-3 text-left align-middle font-medium text-neutral-500 [&:has([role=checkbox])]:pr-0 dark:text-neutral-400"><div class="group flex items-center gap-1 cursor-pointer">Date Added<svg xmlns="http://www.w3.org/2000/svg" class="size-5 group-hover:scale-[120%] transition-all ease-in-out duration-300" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 15 12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9"><th class="h-10 px-3 text-left align-middle font-medium text-neutral-500 [&:has([role=checkbox])]:pr-0 dark:text-neutral-400"><div class="group flex items-center gap-1 cursor-pointer">Input Rate<svg xmlns="http://www.w3.org/2000/svg" class="size-5 group-hover:scale-[120%] transition-all ease-in-out duration-300" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 15 12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9"><th class="h-10 px-3 text-left align-middle font-medium text-neutral-500 [&:has([role=checkbox])]:pr-0 dark:text-neutral-400"><div class="group flex items-center gap-1 cursor-pointer">Output Rate<svg xmlns="http://www.w3.org/2000/svg" class="size-5 group-hover:scale-[120%] transition-all ease-in-out duration-300" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 15 12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9"><th class="h-10 px-3 text-left align-middle font-medium text-neutral-500 [&:has([role=checkbox])]:pr-0 dark:text-neutral-400"><div class="group flex items-center gap-1 cursor-pointer">Average Cost<svg xmlns="http://www.w3.org/2000/svg" class="size-5 group-hover:scale-[120%] transition-all ease-in-out duration-300" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 15 12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9"><th class="h-10 px-3 text-left align-middle font-medium text-neutral-500 [&:has([role=checkbox])]:pr-0 dark:text-neutral-400"><div class="group flex items-center gap-1 cursor-pointer">Prompts / $1<svg xmlns="http://www.w3.org/2000/svg" class="size-5 group-hover:scale-[120%] transition-all ease-in-out duration-300" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 15 12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9"><tbody class="[&_tr:last-child]:border-0"><tr class="border-b transition-colors hover:bg-neutral-100/50 data-[state=selected]:bg-neutral-100 dark:hover:bg-neutral-800/50 dark:data-[state=selected]:bg-neutral-800"><td class="p-3 align-middle [&:has([role=checkbox])]:pr-0 text-left" colSpan="6">No models available<div class="flex items-center justify-between mt-8 mb-1"><h3 class="text-lg font-semibold text-black dark:text-neutral-200">Models endpoint<div class="relative inline-block text-left">
<button type="button" class="inline-flex justify-center w-full rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-100 focus:ring-indigo-500">Python<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="-mr-1 ml-2 h-5 w-5" aria-hidden="true"><path d="M6 9l6 6l6 -6">
<p class="text-sm text-gray-500 dark:text-gray-400 mb-2">A list of our current models, model attributes, and pricing.

<pre class="bg-gray-100 dark:bg-gray-700 rounded p-2 overflow-x-auto"><code class="text-sm text-black dark:text-white">import requests\n\nurl = "https://api.ppq.ai/v1/models"\n\nresponse = requests.get(url)\nprint(response.json())
<div class="flex items-center justify-between mb-2"><h3 class="text-lg font-semibold text-black dark:text-neutral-200">Code Examples<div class="relative inline-block text-left">
<button type="button" class="inline-flex justify-center w-full rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-100 focus:ring-indigo-500">Python<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="-mr-1 ml-2 h-5 w-5" aria-hidden="true"><path d="M6 9l6 6l6 -6">
<pre class="bg-gray-100 dark:bg-gray-700 rounded p-2 overflow-x-auto"><code class="text-sm text-black dark:text-white">import requests\n\napi_key = "YOUR_API_KEY"\nurl = "https://api.ppq.ai/chat/completions"\n\nheaders = {\n "Content-Type": "application/json",\n "Authorization": f"Bearer {api_key}"\n}\n\ndata = {\n "model": "claude-3.5-sonnet",\n "messages": [{"role": "user", "content": "Hello, how are you?"}]\n}\n\nresponse = requests.post(url, json=data, headers=headers)\nprint(response.json())
<h3 class="text-lg font-semibold mb-2 text-black dark:text-neutral-200">Online Mode<p class="text-sm text-gray-500 dark:text-gray-400 mb-4">Any model can be given real-time web access by including a <code class="bg-gray-100 dark:bg-gray-700 rounded px-1.5 py-0.5 text-black dark:text-white">plugins array in your request. Before your query reaches the AI model, a web search is performed and the results are injected into the prompt, giving the model real-time context to work with.

<h4 class="text-md font-semibold mb-2 text-black dark:text-neutral-200">How to use<div class="bg-gray-50 dark:bg-gray-800 rounded p-4 mb-4 text-sm">
<span class="text-gray-700 dark:text-gray-300">Add a <code class="text-black dark:text-white font-semibold">plugins<span class="text-gray-700 dark:text-gray-300"> array to your request body with the web plugin:
<h4 class="text-md font-semibold mb-2 text-black dark:text-neutral-200">Plugin parameters<div class="bg-gray-50 dark:bg-gray-800 rounded p-4 mb-4 text-sm"><div class="mb-3"><code class="text-black dark:text-white font-semibold">id<span class="text-red-500 ml-1"><span class="text-gray-500 dark:text-gray-400 ml-2">Plugin identifier. Use <code class="bg-gray-100 dark:bg-gray-700 rounded px-1 py-0.5">"web" for web search.
<code class="text-black dark:text-white font-semibold">max_results<span class="text-gray-500 dark:text-gray-400 ml-2">Number of web search results to retrieve and inject into the model's context (default: 5). More results provide broader context but increase token usage.
<h4 class="text-md font-semibold mb-2 text-black dark:text-neutral-200">Search providers<p class="text-sm text-gray-500 dark:text-gray-400 mb-3">The search engine used depends on the model:

<div class="bg-gray-50 dark:bg-gray-800 rounded p-4 mb-4 text-sm space-y-3">
<span class="text-black dark:text-white font-semibold">Native search<span class="text-gray-500 dark:text-gray-400 ml-2">— Models from Perplexity, OpenAI (GPT-5+), and Anthropic (Claude) have built-in web search optimized by their providers. Pricing varies by provider.
<span class="text-black dark:text-white font-semibold">Exa.AI search<span class="text-gray-500 dark:text-gray-400 ml-2">— All other models use <a href="https://exa.ai/" target="_blank" rel="noopener noreferrer" class="text-blue-500 hover:text-blue-600 dark:text-blue-400 dark:hover:text-blue-300 underline">Exa.AI, a search engine designed for AI applications. Cost: $0.02 per request (in addition to the model's token pricing).
<div class="flex items-center justify-between mb-2"><h4 class="text-md font-semibold text-black dark:text-neutral-200">Example<div class="relative inline-block text-left">
<button type="button" class="inline-flex justify-center w-full rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-100 focus:ring-indigo-500">curl<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="-mr-1 ml-2 h-5 w-5" aria-hidden="true"><path d="M6 9l6 6l6 -6">
<pre class="bg-gray-100 dark:bg-gray-700 rounded p-2 overflow-x-auto"><code class="text-sm text-black dark:text-white">curl -X POST https://api.ppq.ai/chat/completions \\n -H "Content-Type: application/json" \\n -H "Authorization: Bearer null" \\n -d '{\n "model": "claude-sonnet-4-5",\n "plugins": [{"id": "web", "max_results": 5}],\n "messages": [{"role": "user", "content": "What is the weather in Omaha, Nebraska right now?"}]\n }'
<div id="speech-to-text"><section class="border-t border-gray-200 dark:border-gray-700 pt-8"><div class="flex items-center mb-4"><h2 class="text-xl lg:text-2xl font-bold text-black dark:text-neutral-200">Speech-to-Text API<p class="text-sm text-gray-500 dark:text-gray-400 mb-4">Convert audio to text using our OpenAI-compatible transcription API. Powered by Deepgram Nova-3 for high-quality, accurate transcriptions.

<h3 class="text-lg font-semibold mb-2 text-black dark:text-neutral-200">Endpoint<code class="bg-gray-100 dark:bg-gray-700 rounded p-2 block text-sm text-black dark:text-white mb-4">POST https://ppq.ai/api/v1/audio/transcriptions<h3 class="text-lg font-semibold mb-2 text-black dark:text-neutral-200">Supported Audio Formats<p class="text-sm text-gray-500 dark:text-gray-400 mb-4">mp3, mp4, mpeg, mpga, m4a, wav, webm (max 25MB)

<h3 class="text-lg font-semibold mb-2 text-black dark:text-neutral-200">Parameters<div class="bg-gray-50 dark:bg-gray-800 rounded p-4 mb-4 text-sm"><div class="mb-3"><code class="text-black dark:text-white font-semibold">file<span class="text-red-500 ml-1">
<span class="text-gray-500 dark:text-gray-400 ml-2">The audio file to transcribe<div class="mb-3"><code class="text-black dark:text-white font-semibold">model<span class="text-gray-500 dark:text-gray-400 ml-2">Model to use: "nova-3" (default) or "nova-2"<div class="mb-3"><code class="text-black dark:text-white font-semibold">response_format<span class="text-gray-500 dark:text-gray-400 ml-2">Format: json, text, srt, vtt, or verbose_json (default: json)<div class="mb-3"><code class="text-black dark:text-white font-semibold">language<span class="text-gray-500 dark:text-gray-400 ml-2">Language code (e.g., "en", "es", "fr") or "multi" for auto-detect
<code class="text-black dark:text-white font-semibold">prompt<span class="text-gray-500 dark:text-gray-400 ml-2">Optional text to guide the model's style
<div class="flex items-center justify-between mb-2"><h3 class="text-lg font-semibold text-black dark:text-neutral-200">Code Examples<div class="relative inline-block text-left">
<button type="button" class="inline-flex justify-center w-full rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-100 focus:ring-indigo-500">Python<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="-mr-1 ml-2 h-5 w-5" aria-hidden="true"><path d="M6 9l6 6l6 -6">
<pre class="bg-gray-100 dark:bg-gray-700 rounded p-2 overflow-x-auto"><code class="text-sm text-black dark:text-white">from openai import OpenAI\n\n# Initialize client with PayPerQ API\nclient = OpenAI(\n api_key="null",\n base_url="https://ppq.ai/api/v1"\n)\n\n# Transcribe audio file\nwith open("audio.mp3", "rb") as audio_file:\n transcription = client.audio.transcriptions.create(\n model="nova-3", # Deepgram Nova-3\n file=audio_file,\n response_format="json" # Options: json, text, srt, vtt, verbose_json\n )\n\nprint(transcription.text)<div id="text-to-speech"><section class="border-t border-gray-200 dark:border-gray-700 pt-8"><div class="flex items-center mb-4"><h2 class="text-xl lg:text-2xl font-bold text-black dark:text-neutral-200">Text-to-Speech API<p class="text-sm text-gray-500 dark:text-gray-400 mb-4">Convert text to natural-sounding speech using our OpenAI-compatible TTS API. Powered by DeepGram Aura for high-quality voice synthesis.

<h3 class="text-lg font-semibold mb-2 text-black dark:text-neutral-200">Endpoint<code class="bg-gray-100 dark:bg-gray-700 rounded p-2 block text-sm text-black dark:text-white mb-4">POST https://ppq.ai/api/v1/audio/speech<h3 class="text-lg font-semibold mb-2 text-black dark:text-neutral-200">Parameters<div class="bg-gray-50 dark:bg-gray-800 rounded p-4 mb-4 text-sm"><div class="mb-3"><code class="text-black dark:text-white font-semibold">input<span class="text-red-500 ml-1"><span class="text-gray-500 dark:text-gray-400 ml-2">The text to convert to speech (max 2000 characters)<div class="mb-3"><code class="text-black dark:text-white font-semibold">model<span class="text-gray-500 dark:text-gray-400 ml-2">Model to use: "deepgram_aura_2" (default)
<code class="text-black dark:text-white font-semibold">voice<span class="text-gray-500 dark:text-gray-400 ml-2">DeepGram Aura voice ID (default: aura-2-arcas-en)
<h3 class="text-lg font-semibold mb-2 text-black dark:text-neutral-200">Available Voices<div class="bg-gray-50 dark:bg-gray-800 rounded p-4 mb-4 text-sm"><div class="mb-2"><code class="text-black dark:text-white">aura-2-arcas-en<span class="text-gray-500 dark:text-gray-400 ml-2">Arcas - Natural, Smooth, Clear<div class="mb-2"><code class="text-black dark:text-white">aura-2-thalia-en<span class="text-gray-500 dark:text-gray-400 ml-2">Thalia - Clear, Confident, Energetic<div class="mb-2"><code class="text-black dark:text-white">aura-2-andromeda-en<span class="text-gray-500 dark:text-gray-400 ml-2">Andromeda - Casual, Expressive<div class="mb-2"><code class="text-black dark:text-white">aura-2-helena-en<span class="text-gray-500 dark:text-gray-400 ml-2">Helena - Caring, Natural, Friendly<div class="mb-2"><code class="text-black dark:text-white">aura-2-apollo-en<span class="text-gray-500 dark:text-gray-400 ml-2">Apollo - Confident, Comfortable<div class="mb-3"><code class="text-black dark:text-white">aura-2-aries-en<span class="text-gray-500 dark:text-gray-400 ml-2">Aries - Warm, Energetic, Caring<div class="pt-2 border-t border-gray-200 dark:border-gray-600"><span class="text-gray-500 dark:text-gray-400">For more voices, visit DeepGram: <a href="https://developers.deepgram.com/docs/tts-models" target="_blank" rel="noopener noreferrer" class="text-blue-500 hover:text-blue-600 dark:text-blue-400 dark:hover:text-blue-300 underline">developers.deepgram.com/docs/tts-models<div class="flex items-center justify-between mb-2"><h3 class="text-lg font-semibold text-black dark:text-neutral-200">Code Examples<div class="relative inline-block text-left">
<button type="button" class="inline-flex justify-center w-full rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-100 focus:ring-indigo-500">Python<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="-mr-1 ml-2 h-5 w-5" aria-hidden="true"><path d="M6 9l6 6l6 -6">
<pre class="bg-gray-100 dark:bg-gray-700 rounded p-2 overflow-x-auto"><code class="text-sm text-black dark:text-white">from openai import OpenAI\n\n# Initialize client with PayPerQ API\nclient = OpenAI(\n api_key="null",\n base_url="https://ppq.ai/api/v1"\n)\n\n# Generate speech from text\nresponse = client.audio.speech.create(\n model="deepgram_aura_2",\n voice="aura-2-arcas-en", # Natural, Smooth, Clear\n input="Hello, welcome to PayPerQ!"\n)\n\n# Save to file\nresponse.stream_to_file("output.mp3")<div id="image-generation"><section class="border-t border-gray-200 dark:border-gray-700 pt-8"><div class="flex items-center mb-4"><h2 class="text-xl lg:text-2xl font-bold text-black dark:text-neutral-200">Image Generation API<p class="text-sm text-gray-500 dark:text-gray-400 mb-4">Generate images from text prompts or transform existing images using state-of-the-art AI models. Requests are synchronous — the API returns the generated images directly in the response.

<h3 class="text-lg font-semibold mb-2 text-black dark:text-neutral-200">Endpoint<code class="bg-gray-100 dark:bg-gray-700 rounded p-2 block text-sm text-black dark:text-white mb-4">POST https://api.ppq.ai/v1/images/generations<h3 class="text-lg font-semibold mb-2 text-black dark:text-neutral-200">Parameters<div class="bg-gray-50 dark:bg-gray-800 rounded p-4 mb-4 text-sm"><div class="mb-3"><code class="text-black dark:text-white font-semibold">model<span class="text-red-500 ml-1">
<span class="text-gray-500 dark:text-gray-400 ml-2">The model to use for generation (see Available Models below)<div class="mb-3"><code class="text-black dark:text-white font-semibold">prompt<span class="text-red-500 ml-1"><span class="text-gray-500 dark:text-gray-400 ml-2">A text description of the image to generate<div class="mb-3"><code class="text-black dark:text-white font-semibold">n<span class="text-gray-500 dark:text-gray-400 ml-2">Number of images to generate, 110 (default: 1)<div class="mb-3"><code class="text-black dark:text-white font-semibold">quality<span class="text-gray-500 dark:text-gray-400 ml-2">Quality tier — varies by model (e.g. "low", "medium", "high", "1k", "2k")<div class="mb-3"><code class="text-black dark:text-white font-semibold">size<span class="text-gray-500 dark:text-gray-400 ml-2">Image size or aspect ratio (e.g. "1:1", "16:9"). Model-specific.
<code class="text-black dark:text-white font-semibold">image_url<span class="text-gray-500 dark:text-gray-400 ml-2">Source image URL for image-to-image models (e.g. flux-2-pro-i2i)
<h3 class="text-lg font-semibold mb-2 text-black dark:text-neutral-200">Available Image Models<div class="bg-gray-50 dark:bg-gray-800 rounded p-4 mb-4 text-sm"><div class="mb-2"><code class="text-black dark:text-white">gpt-image-1<span class="text-gray-500 dark:text-gray-400 ml-2">GPT Image 1 (4o) — quality: low, medium, high<div class="mb-2"><code class="text-black dark:text-white">gpt-image-1.5<span class="text-gray-500 dark:text-gray-400 ml-2">GPT Image 1.5 — quality: medium, high<div class="mb-2"><code class="text-black dark:text-white">nano-banana-pro<span class="text-gray-500 dark:text-gray-400 ml-2">Gemini 3.0 — quality: standard, 4k<div class="mb-2"><code class="text-black dark:text-white">flux-2-pro<span class="text-gray-500 dark:text-gray-400 ml-2">Flux 2 Pro — quality: 1k, 2k<div class="mb-2"><code class="text-black dark:text-white">flux-2-flex<span class="text-gray-500 dark:text-gray-400 ml-2">Flux 2 Flex — quality: 1k, 2k<div class="mb-2"><code class="text-black dark:text-white">flux-2-pro-i2i<span class="text-gray-500 dark:text-gray-400 ml-2">Flux 2 Pro (Image-to-Image) — requires image_url<div class="mb-2"><code class="text-black dark:text-white">flux-kontext-pro<span class="text-gray-500 dark:text-gray-400 ml-2">Flux Kontext Pro — flat pricing<div class="mb-2"><code class="text-black dark:text-white">flux-kontext-max<span class="text-gray-500 dark:text-gray-400 ml-2">Flux Kontext Max — flat pricing<div class="pt-2 border-t border-gray-200 dark:border-gray-600"><span class="text-gray-500 dark:text-gray-400">Use <code class="text-black dark:text-white">GET /v1/media/models to see all available models and current pricing.<h3 class="text-lg font-semibold mb-2 text-black dark:text-neutral-200">Response<pre class="bg-gray-100 dark:bg-gray-700 rounded p-4 overflow-x-auto mb-4"><code class="text-sm text-black dark:text-white">{\n "created": 1709234567,\n "model": "gpt-image-1",\n "cost": 0.0805,\n "data": [\n {\n "url": "https://api.ppq.ai/v1/media/gen_abc123/0?sig=...&exp=...",\n "content_type": "image/png"\n }\n ]\n}<div class="flex items-center justify-between mb-2"><h3 class="text-lg font-semibold text-black dark:text-neutral-200">Code Examples<div class="relative inline-block text-left">
<button type="button" class="inline-flex justify-center w-full rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-100 focus:ring-indigo-500">Python<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="-mr-1 ml-2 h-5 w-5" aria-hidden="true"><path d="M6 9l6 6l6 -6">
<pre class="bg-gray-100 dark:bg-gray-700 rounded p-2 overflow-x-auto"><code class="text-sm text-black dark:text-white">import requests\n\napi_key = "YOUR_API_KEY"\nurl = "https://api.ppq.ai/v1/images/generations"\n\nheaders = {\n "Content-Type": "application/json",\n "Authorization": f"Bearer {api_key}"\n}\n\ndata = {\n "model": "gpt-image-1",\n "prompt": "A futuristic cityscape at sunset",\n "quality": "medium",\n "n": 1\n}\n\nresponse = requests.post(url, json=data, headers=headers)\nresult = response.json()\n\n# Each item in data[] has a signed URL\nfor image in result["data"]:\n print(image["url"])<div id="video-generation"><section class="border-t border-gray-200 dark:border-gray-700 pt-8"><div class="flex items-center mb-4"><h2 class="text-xl lg:text-2xl font-bold text-black dark:text-neutral-200">Video Generation API<p class="text-sm text-gray-500 dark:text-gray-400 mb-4">Generate videos from text prompts or input images. Video generation is asynchronous — submit a request, then poll for the result. Supports text-to-video and image-to-video models.

<h3 class="text-lg font-semibold mb-2 text-black dark:text-neutral-200">Step 1: Submit a Generation<code class="bg-gray-100 dark:bg-gray-700 rounded p-2 block text-sm text-black dark:text-white mb-4">POST https://api.ppq.ai/v1/videos<h3 class="text-lg font-semibold mb-2 text-black dark:text-neutral-200">Parameters<div class="bg-gray-50 dark:bg-gray-800 rounded p-4 mb-4 text-sm"><div class="mb-3"><code class="text-black dark:text-white font-semibold">model<span class="text-red-500 ml-1">
<span class="text-gray-500 dark:text-gray-400 ml-2">The video model to use (see Available Models below)<div class="mb-3"><code class="text-black dark:text-white font-semibold">prompt<span class="text-red-500 ml-1">*<span class="text-gray-500 dark:text-gray-400 ml-2">A text description of the video to generate<div class="mb-3"><code class="text-black dark:text-white font-semibold">aspect_ratio<span class="text-gray-500 dark:text-gray-400 ml-2">Aspect ratio (e.g. "16:9", "9:16", "1:1"). Default: "16:9"<div class="mb-3"><code class="text-black dark:text-white font-semibold">duration<span class="text-gray-500 dark:text-gray-400 ml-2">Video duration in seconds (e.g. "5", "10"). Model-specific.<div class="mb-3"><code class="text-black dark:text-white font-semibold">quality<span class="text-gray-500 dark:text-gray-400 ml-2">Quality/resolution tier (e.g. "720p", "1080p"). Model-specific.
<code class="text-black dark:text-white font-semibold">image_url<span class="text-gray-500 dark:text-gray-400 ml-2">A publicly accessible image URL for image-to-video models
<h3 class="text-lg font-semibold mb-2 text-black dark:text-neutral-200">Submit Response (202)<pre class="bg-gray-100 dark:bg-gray-700 rounded p-4 overflow-x-auto mb-4"><code class="text-sm text-black dark:text-white">{\n "id": "gen_abc123",\n "model": "kling-2.1-pro",\n "status": "pending",\n "created": 1709234567,\n "estimated_cost": 0.2875\n}<h3 class="text-lg font-semibold mb-2 text-black dark:text-neutral-200">Step 2: Poll for Status<code class="bg-gray-100 dark:bg-gray-700 rounded p-2 block text-sm text-black dark:text-white mb-4">GET https://api.ppq.ai/v1/videos/:id<p class="text-sm text-gray-500 dark:text-gray-400 mb-4">Poll this endpoint every 510 seconds until <code class="text-black dark:text-white">status changes to <code class="text-black dark:text-white">"completed" or <code class="text-black dark:text-white">"failed". Returns 202 while processing, 200 when done.

<h3 class="text-lg font-semibold mb-2 text-black dark:text-neutral-200">Completed Response (200)<pre class="bg-gray-100 dark:bg-gray-700 rounded p-4 overflow-x-auto mb-4"><code class="text-sm text-black dark:text-white">{\n "id": "gen_abc123",\n "model": "kling-2.1-pro",\n "status": "completed",\n "created": 1709234567,\n "data": {\n "url": "https://api.ppq.ai/v1/media/gen_abc123/0?sig=...&exp=...",\n "content_type": "video/mp4"\n },\n "cost": 0.2875\n}<h3 class="text-lg font-semibold mb-2 text-black dark:text-neutral-200">Available Video Models<div class="bg-gray-50 dark:bg-gray-800 rounded p-4 mb-4 text-sm"><p class="text-xs text-gray-500 dark:text-gray-400 mb-3 font-medium uppercase tracking-wide">Text-to-Video

<div class="mb-2"><code class="text-black dark:text-white">veo3<span class="text-gray-500 dark:text-gray-400 ml-2">Google Veo 3 (Quality) — 8s<div class="mb-2"><code class="text-black dark:text-white">veo3-fast<span class="text-gray-500 dark:text-gray-400 ml-2">Google Veo 3 (Fast) — 8s<div class="mb-2"><code class="text-black dark:text-white">sora-2<span class="text-gray-500 dark:text-gray-400 ml-2">Sora 2 — 10s, 15s<div class="mb-2"><code class="text-black dark:text-white">sora-2-pro<span class="text-gray-500 dark:text-gray-400 ml-2">Sora 2 Pro — 720p/1080p, 10s/15s<div class="mb-2"><code class="text-black dark:text-white">kling-2.1-pro<span class="text-gray-500 dark:text-gray-400 ml-2">Kling 2.6 — 5s, 10s<div class="mb-2"><code class="text-black dark:text-white">kling-2.1-master<span class="text-gray-500 dark:text-gray-400 ml-2">Kling 2.1 Master — 1080p, 5s/10s<div class="mb-2"><code class="text-black dark:text-white">kling-2.5-turbo<span class="text-gray-500 dark:text-gray-400 ml-2">Kling 2.5 Turbo — 5s, 10s<div class="mb-2"><code class="text-black dark:text-white">runway-gen4<span class="text-gray-500 dark:text-gray-400 ml-2">Runway Gen-4 — 720p/1080p, 5s/10s<div class="mb-4"><code class="text-black dark:text-white">runway-aleph<span class="text-gray-500 dark:text-gray-400 ml-2">Runway Aleph — 5s, 10s<p class="text-xs text-gray-500 dark:text-gray-400 mb-3 font-medium uppercase tracking-wide">Image-to-Video

<div class="mb-2"><code class="text-black dark:text-white">veo3-i2v<span class="text-gray-500 dark:text-gray-400 ml-2">Google Veo 3 I2V — requires image_url<div class="mb-2"><code class="text-black dark:text-white">sora-2-i2v<span class="text-gray-500 dark:text-gray-400 ml-2">Sora 2 I2V — 10s, 15s<div class="mb-2"><code class="text-black dark:text-white">sora-2-pro-i2v<span class="text-gray-500 dark:text-gray-400 ml-2">Sora 2 Pro I2V — 720p/1080p<div class="mb-2"><code class="text-black dark:text-white">kling-2.1-master-i2v<span class="text-gray-500 dark:text-gray-400 ml-2">Kling 2.1 Master I2V — 5s, 10s<div class="mb-2"><code class="text-black dark:text-white">kling-2.5-turbo-i2v<span class="text-gray-500 dark:text-gray-400 ml-2">Kling 2.5 Turbo I2V — 5s, 10s<div class="pt-2 border-t border-gray-200 dark:border-gray-600"><span class="text-gray-500 dark:text-gray-400">Use <code class="text-black dark:text-white">GET /v1/media/models to see all available models and current pricing.<div class="flex items-center justify-between mb-2"><h3 class="text-lg font-semibold text-black dark:text-neutral-200">Code Examples<div class="relative inline-block text-left">
<button type="button" class="inline-flex justify-center w-full rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-100 focus:ring-indigo-500">Python<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="-mr-1 ml-2 h-5 w-5" aria-hidden="true"><path d="M6 9l6 6l6 -6">
<pre class="bg-gray-100 dark:bg-gray-700 rounded p-2 overflow-x-auto mb-6"><code class="text-sm text-black dark:text-white">import requests\nimport time\n\napi_key = "YOUR_API_KEY"\nheaders = {\n "Content-Type": "application/json",\n "Authorization": f"Bearer {api_key}"\n}\n\n# Step 1: Submit video generation request\ndata = {\n "model": "kling-2.1-pro",\n "prompt": "A golden retriever running through a meadow",\n "aspect_ratio": "16:9",\n "duration": "5"\n}\n\nresponse = requests.post(\n "https://api.ppq.ai/v1/videos",\n json=data,\n headers=headers\n)\njob = response.json()\ngeneration_id = job["id"]\nprint(f"Job submitted: {generation_id}")\n\n# Step 2: Poll for completion\nwhile True:\n status_res = requests.get(\n f"https://api.ppq.ai/v1/videos/{generation_id}",\n headers=headers\n )\n status = status_res.json()\n\n if status["status"] == "completed":\n print(f"Video ready: {status['data']['url']}")\n break\n elif status["status"] == "failed":\n print(f"Error: {status.get('error')}")\n break\n\n print("Processing...")\n time.sleep(5)<div class="flex items-center justify-between mb-2"><h3 class="text-lg font-semibold text-black dark:text-neutral-200">Poll Status Example<div class="relative inline-block text-left">
<button type="button" class="inline-flex justify-center w-full rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-100 focus:ring-indigo-500">Python<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="-mr-1 ml-2 h-5 w-5" aria-hidden="true"><path d="M6 9l6 6l6 -6">
<pre class="bg-gray-100 dark:bg-gray-700 rounded p-2 overflow-x-auto"><code class="text-sm text-black dark:text-white">import requests\n\napi_key = "YOUR_API_KEY"\ngeneration_id = "gen_abc123"\n\nresponse = requests.get(\n f"https://api.ppq.ai/v1/videos/{generation_id}",\n headers={"Authorization": f"Bearer {api_key}"}\n)\n\nresult = response.json()\nprint(result)\n# {"id": "gen_abc123", "model": "kling-2.1-pro", "status": "completed",\n# "data": {"url": "https://api.ppq.ai/v1/media/gen_abc123/0?sig=...&exp=..."},\n# "cost": 0.2875}<div id="topups"><section class="border-t border-gray-200 dark:border-gray-700 pt-8"><div class="flex items-center mb-4"><h2 class="text-xl lg:text-2xl font-bold text-black dark:text-neutral-200">API Topups<p class="text-sm text-gray-500 dark:text-gray-400 mb-4">The PayPerQ API allows users to programmatically create deposit invoices and top up their account balances using various payment methods including Bitcoin (Lightning), Bitcoin (on-chain), Monero, Litecoin, and Liquid Bitcoin.

<div class="space-y-6">
<h3 class="text-lg font-semibold mb-2 text-black dark:text-neutral-200">POST /topup/create/{method}<p class="text-sm text-gray-500 dark:text-gray-400 mb-2">Create a topup invoice for the specified payment method.

<p class="text-xs text-gray-500 dark:text-gray-400 mb-2">Methods: btc-lightning, btc, ltc, lbtc, xmr

<div class="flex items-center justify-between mb-2 mt-4"><h4 class="text-md font-semibold text-black dark:text-neutral-200">Example: Create Bitcoin Lightning Topup (USD)<div class="relative inline-block text-left">
<button type="button" class="inline-flex justify-center w-full rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-100 focus:ring-indigo-500">curl<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="-mr-1 ml-2 h-5 w-5" aria-hidden="true"><path d="M6 9l6 6l6 -6">
<pre class="bg-gray-100 dark:bg-gray-700 rounded p-4 overflow-x-auto"><code class="text-sm text-black dark:text-white">curl -X POST https://api.ppq.ai/topup/create/btc-lightning \\n -H "Authorization: Bearer null" \\n -H "Content-Type: application/json" \\n -d '{"amount": 1000, "currency": "SATS"}' # Also supports "BTC" and "USD" as currency
<h3 class="text-lg font-semibold mb-2 text-black dark:text-neutral-200">GET /topup/status/{invoice_id}<p class="text-sm text-gray-500 dark:text-gray-400 mb-2">Check the status of a topup invoice.

<div class="flex items-center justify-between mb-2 mt-4"><h4 class="text-md font-semibold text-black dark:text-neutral-200">Example:<div class="relative inline-block text-left">
<button type="button" class="inline-flex justify-center w-full rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-100 focus:ring-indigo-500">curl<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="-mr-1 ml-2 h-5 w-5" aria-hidden="true"><path d="M6 9l6 6l6 -6">
<pre class="bg-gray-100 dark:bg-gray-700 rounded p-4 overflow-x-auto"><code class="text-sm text-black dark:text-white">curl -X GET https://api.ppq.ai/topup/status/BTCPayInvoiceId123 \\n -H "Authorization: Bearer null"
<h3 class="text-lg font-semibold mb-2 text-black dark:text-neutral-200">GET /topup/payment-methods<p class="text-sm text-gray-500 dark:text-gray-400 mb-2">Get a list of all supported payment methods with their limits and supported currencies.

<div class="flex items-center justify-between mb-2 mt-4"><h4 class="text-md font-semibold text-black dark:text-neutral-200">Example:<div class="relative inline-block text-left">
<button type="button" class="inline-flex justify-center w-full rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-100 focus:ring-indigo-500">curl<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="-mr-1 ml-2 h-5 w-5" aria-hidden="true"><path d="M6 9l6 6l6 -6">
<pre class="bg-gray-100 dark:bg-gray-700 rounded p-4 overflow-x-auto"><code class="text-sm text-black dark:text-white">curl -X GET https://api.ppq.ai/topup/payment-methods
<h3 class="text-lg font-semibold mb-2 text-black dark:text-neutral-200">POST /accounts/create<p class="text-sm text-gray-500 dark:text-gray-400 mb-2">Create a new account, which returns a new credit_id and an api_key.

<div class="flex items-center justify-between mb-2 mt-4"><h4 class="text-md font-semibold text-black dark:text-neutral-200">Example:<div class="relative inline-block text-left">
<button type="button" class="inline-flex justify-center w-full rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-100 focus:ring-indigo-500">curl<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="-mr-1 ml-2 h-5 w-5" aria-hidden="true"><path d="M6 9l6 6l6 -6">
<pre class="bg-gray-100 dark:bg-gray-700 rounded p-4 overflow-x-auto"><code class="text-sm text-black dark:text-white">curl -X POST https://api.ppq.ai/accounts/create
<h3 class="text-lg font-semibold mb-2 text-black dark:text-neutral-200">POST /credits/balance<p class="text-sm text-gray-500 dark:text-gray-400 mb-2">Get the current credit balance for your account.

<div class="flex items-center justify-between mb-2 mt-4"><h4 class="text-md font-semibold text-black dark:text-neutral-200">Example:<div class="relative inline-block text-left">
<button type="button" class="inline-flex justify-center w-full rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-100 focus:ring-indigo-500">curl<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="-mr-1 ml-2 h-5 w-5" aria-hidden="true"><path d="M6 9l6 6l6 -6">
<pre class="bg-gray-100 dark:bg-gray-700 rounded p-4 overflow-x-auto"><code class="text-sm text-black dark:text-white">curl -X POST "https://api.ppq.ai/credits/balance" \\n -H "Content-Type: application/json" \\n -d '{"credit_id":"4af59b9d-f6ec-4531-82f7-ce776d49e207"}'<h3 class="text-lg font-semibold mt-8 mb-4 text-black dark:text-neutral-200">More Usage Examples<div class="flex items-center justify-between mb-2"><h4 class="text-md font-semibold text-black dark:text-neutral-200">Bitcoin On-Chain Topup (BTC)<div class="relative inline-block text-left">
<button type="button" class="inline-flex justify-center w-full rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-100 focus:ring-indigo-500">curl<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor""}

context_part | role=tool

{"success":true,"url":"https://ppq.ai/faq","method":"GET","status_code":200,"http_ok":true,"truncated":false,"bytes_received":36508,"content_type":"text/html; charset=utf-8","body":"<html lang="en" dir="auto"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, user-scalable=no"/><meta name="apple-mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><meta name="mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-title" content="PayPerQ"/><link rel="manifest" href="/manifest.json"/><link rel="icon" type="image/png" href="/meta/favicon-48x48.png" sizes="48x48"/><link rel="icon" type="image/svg+xml" href="/meta/favicon.svg"/><link rel="shortcut icon" href="/meta/favicon.ico"/><link rel="apple-touch-icon" sizes="180x180" href="/meta/apple-touch-icon.png"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font="size-adjust"/><link rel="preload" href="/_next/static/media/9a4ee768fed045da-s.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font="size-adjust"/><link rel="preload" href="/_next/static/css/c6aee3ecd57785bc.css?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" as="style"/><link rel="stylesheet" href="/_next/static/css/c6aee3ecd57785bc.css?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" data-n-g=""/><link rel="preload" href="/_next/static/css/1fc2d64d8add863d.css?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" as="style"/><link rel="stylesheet" href="/_next/static/css/1fc2d64d8add863d.css?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" data-n-p=""/><noscript data-n-css=""><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"></script><script src="/_next/static/chunks/webpack-6bc0c9379ad92833.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/framework-d802a17e2a0a424c.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/main-d4e844f2dd99fdf0.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/pages/_app-8980ffa17da19ffa.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/3f06fcd6-ca73fbf6fc050fa0.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/3061-bb6086eafdf90c15.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/3742-ac26990f9b10db51.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/pages/faq-2cea8e38418aa051.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/xLFQ-gZQ6t91hfJoo0Zm7/_buildManifest.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/xLFQ-gZQ6t91hfJoo0Zm7/_ssgManifest.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script></head><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div id="__next"><div class="__className_f367f3"><div style="position:fixed;z-index:9999;top:16px;left:16px;right:16px;bottom:16px;pointer-events:none">

<script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div class="min-h-screen bg-white dark:bg-[#212121]"><div class="max-w-4xl mx-auto px-4 py-8"><div class="flex items-center pb-6 gap-3"><a class="flex gap-2" href="/"><div style="opacity:0.9"><img alt="Descriptive Alt Text" loading="lazy" width="26" height="26" decoding="async" data-nimg="1" style="color:transparent" srcSet="/_next/image?url=%2Fflame2.png&w=32&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1x, /_next/image?url=%2Fflame2.png&w=64&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2x" src="/_next/image?url=%2Fflame2.png&w=64&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><h1 class="__className_b77edb text-gray-900 dark:text-white text-[17px] font-extrabold">PayPerQ
<svg xmlns="http://www.w3.org/2000/svg" class="w-5 h-5" viewBox="0 0 1024 1024"><path fill="currentColor" d="M340.864 149.312a30.59 30.59 0 0 0 0 42.752L652.736 512L340.864 831.872a30.59 30.59 0 0 0 0 42.752a29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z">
<div class="text-xs lg:text-sm">FAQs<div class="space-y-8 text-gray-800 dark:text-gray-200"><section id="about-payperq"><h2 class="text-lg lg:text-xl font-bold mb-2">About PayPerQ

PayPerQ is a pay-per-query Chatbot that leverages generative AI providers and Crypto to bring premium tier AI to more people around the world.

<section id="subscriptions"><h2 class="text-lg lg:text-xl font-bold mb-2">Do you offer subscriptions?

Subscriptions charge too much to casual users and unfairly limit or diminish the experience of power users. We feel that the best and most simple way to consume AI is on a pay per-use-basis!

<section id="pricing"><h2 class="text-lg lg:text-xl font-bold mb-2">How Pricing Works<p class="mb-4">To see our pricing tables, <a class="underline" href="/pricing">click here. The average PPQ user spends only ~$4 per month! Your own usage and pricing can be monitored in the Account Info link on the top right of the home page.

<section id="mobile-app"><h2 class="text-lg lg:text-xl font-bold mb-2">Do you have a mobile app?

We have a Progressive Web App! <a target="_blank" class="underline" href="https://x.com/MattAhlborg/status/1849827141749281081">Click here for simple installation instructions!

<section id="gift-cards"><h2 class="text-lg lg:text-xl font-bold mb-2">Do you sell gift cards?

Yes, we sell gift cards on websites like <a target="_blank" rel="noopener noreferrer" class="underline" href="https://www.bitrefill.com/us/en/gift-cards/ppq-ai-international/">Bitrefill.com! You can redeem gift cards <a class="underline" href="/gift-card">here.

<section id="integration"><h2 class="text-lg lg:text-xl font-bold mb-2">Can I integrate your service into my wallet or exchange?

Yes! We offer integration partnerships for wallets, exchanges, and other applications. <a class="underline" href="/integrate">Learn more about becoming a partner and how you can offer AI capabilities to your users while generating additional revenue.

<section id="popular-models-stats"><h2 class="text-lg lg:text-xl font-bold mb-2">Where can I see the most popular models and payment methods on PayPerQ?

Visit our <a target="_blank" rel="noopener noreferrer" class="underline" href="https://stats.ppq.ai">community stats page!

<section id="custom-prompts"><h2 class="text-lg lg:text-xl font-bold mb-2">Can I give PayPerQ my own prompts?

Yes! Prompts are a powerful way to enhance your chat experience! <button class="underline">Click here to learn more about prompts!

<section id="lost-credit"><h2 class="text-lg lg:text-xl font-bold mb-2">Create a PPQ bookmark!

Do you use a privacy preserving browser and are you tired of plugging in your credit id with each visit? Create a bookmark with this <a class="underline inline-block" href="https://ppq.ai/sessions/">https://ppq.ai/sessions/<button class="inline-flex cursor-pointer text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-300 ml-2 pr-2 align-middle" title="Copy to clipboard"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-copy"><path d="M7 7m0 2.667a2.667 2.667 0 0 1 2.667 -2.667h8.666a2.667 2.667 0 0 1 2.667 2.667v8.666a2.667 2.667 0 0 1 -2.667 2.667h-8.666a2.667 2.667 0 0 1 -2.667 -2.667z"><path d="M4.012 16.737a2.005 2.005 0 0 1 -1.012 -1.737v-10c0 -1.1 .9 -2 2 -2h10c.75 0 1.158 .385 1.5 1">and it will automatically load your credit id in for you each visit!

<section id="lost-credit"><h2 class="text-lg lg:text-xl font-bold mb-2">What if I lose my credit?

Your credit id is automatically stored in your browser history. If it accidentally gets deleted or you want to transfer it to another device or share it with a friend, you can find your credit id in the the original payment memo in your wallet. Then, <button class="underline">Click here to redeem your credit.

<section id="transparency"><h2 class="text-lg lg:text-xl font-bold mb-4">Transparency:

Read up on what PayPerQ does with your data <button class="underline">here.

<section id="blog-faq"><h2 class="text-lg lg:text-xl font-bold mb-2">Do you have a blog?

Yes! <a class="underline" href="/blog">Visit our blog.

<section id="report-issues"><h2 class="text-lg lg:text-xl font-bold mb-2">Where can I report issues?

The best place to report issues is our <a target="_blank" class="underline" href="https://github.com/PayPerQ/PayPerQ-Issue-Tracker/issues">issue tracker on github. Other options are our telegram channel or in the customer chatbot widget.

<section id="lightning-node"><h2 class="text-lg lg:text-xl font-bold mb-2">Do you have a lightning node? Can I create a channel with you?

Yes we do! We have an actively maintained node and would love for you to create a channel to us! <a target="_blank" class="underline" href="https://amboss.space/node/03dd1b795652debf811f93142ea4e7015889929e43220966e2431b38f74535dd23">Our node.

<section id="hiring"><h2 class="text-lg lg:text-xl font-bold mb-2">Are you hiring?

Yes! Check out our <a class="underline" href="/careers">careers page for more information.

<section id="about-creator"><h2 class="text-lg lg:text-xl font-bold mb-4">About the Creator<p class="mb-4">PayPerQ is created by me, Matt Ahlborg. I want PayPerQ to become the preferred AI interface for all Crypto adjacent developers and professionals around the world. Please help me get it there!

<p class="mb-4">What would it take for PayPerQ to become your primary AI interface?

<p class="">Please click Chat button on the bottom right and let me know!

<section class="pt-8 flex justify-center space-x-8"><a target="_blank" href="https://twitter.com/PPQdotAI"><svg xmlns="http://www.w3.org/2000/svg" class="fill-black dark:fill-white" width="24px" height="24px" viewBox="0,0,256,256"><g fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none"><g transform="scale(5.12,5.12)"><path d="M34.21875,5.46875c-5.98047,0 -10.84375,4.86328 -10.84375,10.84375c0,0.35938 0.08984,0.71094 0.125,1.0625c-7.39453,-0.70703 -13.93359,-4.26953 -18.375,-9.71875c-0.20703,-0.26172 -0.52734,-0.40234 -0.86328,-0.37891c-0.33203,0.02344 -0.62891,0.21484 -0.79297,0.50391c-0.93359,1.60547 -1.46875,3.45313 -1.46875,5.4375c0,2.40234 0.85938,4.60156 2.1875,6.40625c-0.25781,-0.11328 -0.53906,-0.17578 -0.78125,-0.3125c-0.30859,-0.16406 -0.67969,-0.15625 -0.98047,0.02344c-0.30078,0.17969 -0.48438,0.50391 -0.48828,0.85156v0.125c0,3.68359 1.90625,6.88281 4.71875,8.84375c-0.03125,-0.00391 -0.0625,0.00781 -0.09375,0c-0.34375,-0.05859 -0.69141,0.0625 -0.92187,0.32422c-0.23047,0.26172 -0.30469,0.625 -0.20312,0.95703c1.11719,3.47266 3.96875,6.125 7.5,7.09375c-2.8125,1.67188 -6.07422,2.65625 -9.59375,2.65625c-0.76172,0 -1.49219,-0.03906 -2.21875,-0.125c-0.46875,-0.0625 -0.91797,0.21094 -1.07422,0.65625c-0.16016,0.44531 0.01563,0.94141 0.41797,1.1875c4.51172,2.89453 9.86719,4.59375 15.625,4.59375c9.33203,0 16.65234,-3.89844 21.5625,-9.46875c4.91016,-5.57031 7.46875,-12.80469 7.46875,-19.5625c0,-0.28516 -0.02344,-0.5625 -0.03125,-0.84375c1.83203,-1.40234 3.46875,-3.04687 4.75,-4.96875c0.25391,-0.37109 0.22656,-0.86719 -0.06641,-1.21094c-0.28906,-0.34375 -0.77734,-0.44922 -1.18359,-0.25781c-0.51562,0.23047 -1.11719,0.25391 -1.65625,0.4375c0.71094,-0.94922 1.32031,-1.97266 1.6875,-3.125c0.125,-0.39453 -0.01172,-0.82812 -0.33594,-1.08594c-0.32422,-0.25391 -0.77734,-0.28516 -1.13281,-0.07031c-1.70703,1.01172 -3.59766,1.72266 -5.59375,2.15625c-1.9375,-1.8125 -4.48828,-3.03125 -7.34375,-3.03125zM34.21875,7.46875c2.55078,0 4.85547,1.08984 6.46875,2.8125c0.24219,0.25 0.59766,0.35547 0.9375,0.28125c1.30469,-0.25781 2.54297,-0.63672 3.75,-1.125c-0.69531,0.9375 -1.55469,1.73828 -2.5625,2.34375c-0.45703,0.22266 -0.67187,0.75 -0.50391,1.23047c0.16406,0.47656 0.66406,0.75391 1.16016,0.64453c1,-0.12109 1.89063,-0.52734 2.84375,-0.78125c-0.85547,0.92578 -1.79297,1.76172 -2.8125,2.5c-0.27734,0.20313 -0.42969,0.53125 -0.40625,0.875c0.01563,0.40625 0.03125,0.80859 0.03125,1.21875c0,6.25 -2.39844,13.03516 -6.96875,18.21875c-4.57031,5.18359 -11.28125,8.8125 -20.0625,8.8125c-3.98828,0 -7.75391,-0.88281 -11.15625,-2.4375c4.21875,-0.32422 8.10938,-1.81641 11.25,-4.28125c0.32813,-0.26172 0.45703,-0.69922 0.32422,-1.09766c-0.13281,-0.39844 -0.5,-0.67187 -0.91797,-0.68359c-3.29687,-0.05859 -6.05859,-1.97656 -7.53125,-4.6875c0.05469,0 0.10156,0 0.15625,0c0.98828,0 1.96484,-0.125 2.875,-0.375c0.4375,-0.12891 0.73828,-0.53516 0.72266,-0.99219c-0.01562,-0.45703 -0.33984,-0.84766 -0.78516,-0.94531c-3.55859,-0.71875 -6.22656,-3.61719 -6.84375,-7.21875c1.00781,0.34766 2.03906,0.62109 3.15625,0.65625c0.45703,0.02734 0.87109,-0.25781 1.01172,-0.69141c0.14063,-0.43359 -0.03125,-0.91016 -0.41797,-1.15234c-2.375,-1.58984 -3.9375,-4.29687 -3.9375,-7.375c0,-1.14062 0.29688,-2.1875 0.6875,-3.1875c5,5.48828 12,9.13281 19.90625,9.53125c0.3125,0.01563 0.61719,-0.11328 0.82031,-0.35156c0.20313,-0.24219 0.28125,-0.5625 0.21094,-0.86719c-0.15234,-0.64844 -0.25,-1.33594 -0.25,-2.03125c0,-4.89844 3.94531,-8.84375 8.84375,-8.84375z"><a target="_blank" href="https://t.me/+ZjJDTazIrV0zNDFh"><svg xmlns="http://www.w3.org/2000/svg" class="fill-black dark:fill-white" width="24px" height="24px" viewBox="0,0,256,256"><g fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none"><g transform="scale(5.12,5.12)"><path d="M44.37695,5.98633c-0.48705,0.02137 -0.96114,0.15692 -1.38867,0.32813c-0.42317,0.17006 -2.8594,1.20989 -6.45703,2.74805c-3.59763,1.53816 -8.27429,3.54117 -12.91016,5.52734c-9.27174,3.97235 -18.38281,7.88086 -18.38281,7.88086l0.06641,-0.02539c0,0 -0.5499,0.18381 -1.10742,0.57227c-0.27876,0.19423 -0.57866,0.44498 -0.82422,0.81055c-0.24556,0.36557 -0.42507,0.88366 -0.35742,1.43164c0.23762,1.92475 2.23242,2.4707 2.23242,2.4707l0.00781,0.00391l8.90234,3.04688c0.22697,0.75718 2.70012,9.01167 3.24414,10.75977c0.30045,0.96647 0.58167,1.52398 0.875,1.9043c0.14679,0.19032 0.30062,0.3376 0.4707,0.44531c0.06758,0.04279 0.13865,0.0749 0.20898,0.10352c0.0015,0.00066 0.00241,-0.00066 0.00391,0c0.00864,0.00381 0.01677,0.00415 0.02539,0.00781l-0.02344,-0.00586c0.01634,0.0066 0.03247,0.01771 0.04883,0.02344c0.03174,0.01112 0.05119,0.01074 0.0918,0.01953c1.01954,0.35598 1.86328,-0.30469 1.86328,-0.30469l0.03516,-0.02734l5.46875,-5.07227l8.875,6.91992l0.11133,0.05078c1.55345,0.68975 2.95832,0.30493 3.73633,-0.32812c0.77801,-0.63306 1.08398,-1.44922 1.08398,-1.44922l0.0332,-0.08594l6.52148,-33.99023c0.16687,-0.76044 0.19058,-1.41775 0.0332,-2.01172c-0.15738,-0.59397 -0.53974,-1.1103 -1.01953,-1.39648c-0.47979,-0.28619 -0.9817,-0.37879 -1.46875,-0.35742zM44.42969,8.01953c0.1978,-0.00916 0.34441,0.01345 0.39062,0.04102c0.04621,0.02756 0.06696,0.02394 0.11133,0.19141c0.04437,0.16747 0.0684,0.52021 -0.05273,1.07227l-0.00391,0.01172l-6.48437,33.79297c-0.01535,0.03402 -0.15047,0.34662 -0.45898,0.59766c-0.31473,0.25609 -0.66477,0.45599 -1.59375,0.06641l-9.70508,-7.56836l-0.27344,-0.21484l-0.00586,0.00586l-2.90234,-2.17773l16.31055,-19.18945c0.25603,-0.30045 0.31139,-0.72339 0.1413,-1.0796c-0.17009,-0.35622 -0.5338,-0.57906 -0.92841,-0.56883c-0.18875,0.0049 -0.37226,0.06314 -0.5293,0.16797l-23.60156,15.73438l-8.91602,-3.05273c0,0 -0.88536,-0.49268 -0.92773,-0.83594c-0.00235,-0.01902 -0.0128,-0.0018 0.0332,-0.07031c0.04601,-0.06849 0.16165,-0.18413 0.30664,-0.28516c0.28998,-0.20204 0.62109,-0.32422 0.62109,-0.32422l0.0332,-0.01172l0.0332,-0.01367c0,0 9.11155,-3.90871 18.38281,-7.88086c4.63563,-1.98607 9.31146,-3.98761 12.9082,-5.52539c3.59582,-1.53738 6.19406,-2.64398 6.41406,-2.73242c0.25046,-0.1003 0.49946,-0.14123 0.69727,-0.15039zM33.61328,18.79297l-12.36914,14.55273l-0.00586,0.00586c-0.01931,0.02325 -0.03756,0.04736 -0.05469,0.07227c-0.01962,0.02706 -0.03787,0.05509 -0.05469,0.08398c-0.06949,0.11795 -0.11403,0.24891 -0.13086,0.38477c-0.00001,0.0026 -0.00001,0.00521 0,0.00781l-1.61133,7.24609c-0.02679,-0.07829 -0.04555,-0.10693 -0.07422,-0.19922v-0.00195c-0.51179,-1.64446 -2.84514,-9.42921 -3.16797,-10.50586zM22.64063,35.73047l2.22266,1.66797l-3.26562,3.02734z"><a target="_blank" href="https://primal.net/p/nprofile1qqsdy27dk8f9qk7qvrm94pkdtus9xtk970jpcp4w48k6cw0khfm06mss64u96"><svg class="fill-black dark:fill-white" width="24px" height="24px" viewBox="0 0 620 620" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M457.468 262.483C469.349 344.787 384.156 362.202 335.143 360.68C331.996 360.582 329.03 362.114 327.171 364.655C322.101 371.586 313.996 380.549 307.739 380.549C300.712 380.549 294.388 394.063 291.504 402.47C291.201 403.353 292.069 404.167 292.957 403.879C370.58 378.675 401.039 370.03 414.161 372.46C424.754 374.421 444.567 409.885 453.149 427.372C431.816 428.598 424.705 409.476 419.801 406.044C415.877 403.299 414.406 415.85 414.161 422.469C409.502 420.018 403.617 416.586 403.126 406.044C402.636 395.503 397.241 398.2 393.073 398.69C388.904 399.18 324.904 419.772 315.341 422.469C305.778 425.166 294.743 428.843 285.671 435.216C270.467 442.571 260.659 437.423 257.962 424.92C255.804 414.918 269.814 384.145 277.088 370.008C268.097 373.358 249.428 380.157 246.682 380.549C244.019 380.93 210.235 407.011 192.169 421.181C191.115 422.008 190.437 423.219 190.194 424.536C187.304 440.241 178.078 444.637 162.084 452.867C149.214 459.49 104.263 528.566 81.1495 565.856C79.5513 568.434 77.2056 570.416 74.6869 572.106C60.0054 581.962 45.053 607.044 38.9885 619.32C30.3571 594.413 41.6041 572.988 48.3065 565.388C45.364 562.839 38.5798 564.326 35.5556 565.388C43.8927 536.706 73.0728 536.706 72.0919 536.706C77.4866 532.048 140.751 441.59 142.222 437.423C143.682 433.289 141.28 413.957 173.077 403.358C173.582 403.189 174.083 402.959 174.53 402.672C199.302 386.75 217.885 361.084 224.123 350.151C191.05 347.877 153.177 329.438 133.375 317.595C129.106 315.042 124.579 312.82 119.636 312.261C92.5231 309.192 65.3757 326.536 54.4368 336.423C49.9249 330.148 55.0089 311.909 58.1149 303.574C47.1295 302.005 30.9783 317.956 24.2759 326.127C17.0176 314.753 23.3768 294.422 27.4636 285.678C12.9471 286.071 3.106 292.706 0 295.975C12.0153 206.497 103.921 232.52 104.95 233.708C100.046 228.609 100.455 221.941 101.272 219.244C156.935 220.715 182.927 211.4 199.356 201.839C328.828 129.522 384.613 173.893 405.211 185.047C425.808 196.201 463.203 200.736 489.073 190.44C519.969 176.467 515.318 140.449 509.057 126.702C502.192 111.626 463.448 90.7882 449.716 64.4356C435.985 38.0831 447.95 6.03652 463.858 1.56985C479.014 -2.68593 489.838 2.26516 498.145 9.7683C503.684 14.7705 519.234 18.3484 525.732 20.6772C532.23 23.0061 543.019 26.0704 542.406 27.909C541.793 29.7476 531.39 29.5022 529.778 29.5022C526.467 29.5022 522.544 29.9925 526.467 31.8311C531.068 33.6968 538.013 36.4085 541.338 38.1936C541.77 38.4256 541.681 39.03 541.207 39.1574C518.642 45.2302 498.494 32.6994 483.555 47.1526C468.352 61.8612 500.72 73.1378 517.395 90.7882C534.069 108.439 551.234 129.521 537.502 177.569C526.871 214.767 482.316 246.393 459.302 258.764C457.979 259.476 457.253 260.996 457.468 262.483Z"><a target="_blank" href="mailto:info@ppq.ai"><svg xmlns="http://www.w3.org/2000/svg" class="fill-black dark:fill-white" width="24px" height="24px" viewBox="0,0,256,256"><g fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none"><g transform="scale(3.2,3.2)"><path d="M11.5,14c-3.57422,0 -6.49219,2.91406 -6.5,6.48438c0,0.00391 0,0.00391 0,0.00781c0,0.00391 0,0.00391 0,0.00781v41c0,3.57813 2.92188,6.5 6.5,6.5h57c3.57813,0 6.5,-2.92187 6.5,-6.5v-41c0,-0.00391 0,-0.00391 0,-0.00781c0,-0.00391 0,-0.00391 0,-0.00781c-0.00781,-3.57031 -2.92578,-6.48437 -6.5,-6.48437zM11.5,16h57c0.94531,0 1.82031,0.28906 2.54297,0.78125l-0.14844,0.26953l0.375,0.8125l0.875,0.1875l0.10547,-0.04687c0.47266,0.71484 0.75,1.56641 0.75,2.49219c0,0 0,0 0,0.00391c-0.00391,1.63281 -0.80078,3.15625 -2.14062,4.08984l-30.85937,21.50391l-30.85937,-21.50391c-1.33984,-0.93359 -2.13672,-2.45703 -2.14062,-4.08984c0,-0.00391 0,-0.00391 0,-0.00391c0,-0.96094 0.30469,-1.84375 0.8125,-2.57422l0.57031,0.08203l0.63281,-0.62891l-0.08203,-0.57422c0.72656,-0.5 1.60938,-0.80078 2.56641,-0.80078zM11.03125,18.39453l-0.63281,0.63672l0.12891,0.88672l0.25,0.24609l0.08203,0.05859l0.88672,0.125l0.63281,-0.62891l-0.12891,-0.89062l-0.25,-0.25l-0.07812,-0.05469zM68.35938,18.40625l-0.31641,0.14453l-0.08594,0.05859l-0.42578,0.78516l0.375,0.81641l0.875,0.18359l0.32031,-0.14453l0.08203,-0.05859l0.42578,-0.78516l-0.375,-0.8125zM14.39453,20.73828l-0.63281,0.63672l0.12891,0.88672l0.25,0.25l0.07813,0.05469l0.89063,0.12891l0.63281,-0.63281l-0.12891,-0.89062l-0.25,-0.24609l-0.08203,-0.05859zM65,20.75l-0.32422,0.14453l-0.08203,0.05859l-0.42578,0.78516l0.375,0.81641l0.875,0.1875l0.32031,-0.14844l0.08203,-0.05859l0.42969,-0.78516l-0.375,-0.8125zM17.76172,23.08203l-0.63672,0.63672l0.12891,0.88672l0.25,0.25l0.08203,0.05469l0.88672,0.12891l0.63281,-0.63281l-0.125,-0.88672l-0.25,-0.25l-0.08594,-0.05469zM61.63281,23.09375l-0.32031,0.14453l-0.08203,0.05859l-0.42969,0.78516l0.375,0.81641l0.87891,0.1875l0.32031,-0.14844l0.08203,-0.05859l0.42969,-0.78516l-0.375,-0.8125zM7,25.36328c0.30469,0.31641 0.63281,0.60938 1,0.86719l3.97656,2.76953c-0.54297,0.01563 -0.97656,0.45703 -0.97656,1c0,0.55078 0.44922,1 1,1c0.55078,0 1,-0.44922 1,-1c0,-0.10937 -0.01953,-0.21875 -0.05469,-0.32422l27.05469,18.85547l27.05469,-18.85547c-0.03516,0.10547 -0.05469,0.21484 -0.05469,0.32422c0,0.55078 0.44922,1 1,1c0.55078,0 1,-0.44922 1,-1c0,-0.54297 -0.43359,-0.98828 -0.97656,-1l3.97656,-2.76953c0.36719,-0.25781 0.69531,-0.55078 1,-0.86719v36.13672c0,2.32813 -1.74609,4.19922 -4,4.44922c-0.02734,-0.53125 -0.46875,-0.94922 -1,-0.94922c-0.55078,0 -1,0.44922 -1,1h-54c0,-0.55078 -0.44922,-1 -1,-1c-0.53125,0 -0.97266,0.41797 -1,0.94922c-2.25391,-0.25 -4,-2.12109 -4,-4.44922zM21.125,25.42578l-0.63672,0.63672l0.12891,0.88672l0.25,0.25l0.08203,0.05469l0.88672,0.12891l0.63281,-0.63281l-0.125,-0.88672l-0.25,-0.25l-0.08203,-0.05469zM58.26953,25.4375l-0.32031,0.14453l-0.08203,0.05859l-0.42969,0.78906l0.375,0.8125l0.87891,0.1875l0.32031,-0.14844l0.08203,-0.05859l0.42578,-0.78516l-0.375,-0.8125zM24.48828,27.76953l-0.63281,0.63672l0.12891,0.88672l0.24609,0.25l0.08203,0.05469l0.88672,0.13281l0.63281,-0.63672l-0.12891,-0.88672l-0.24609,-0.25l-0.08203,-0.05469zM54.90625,27.78125l-0.32031,0.14453l-0.08203,0.05859l-0.42578,0.78906l0.375,0.81641l0.875,0.18359l0.31641,-0.14844l0.08594,-0.05469l0.42578,-0.78906l-0.375,-0.8125zM27.85156,30.11719l-0.63281,0.63281l0.125,0.88672l0.25,0.25l0.08203,0.05469l0.88672,0.13281l0.63672,-0.63672l-0.13281,-0.88672l-0.24609,-0.25l-0.08203,-0.05469zM51.54297,30.125l-0.32031,0.14844l-0.08203,0.05469l-0.42578,0.78906l0.375,0.81641l0.875,0.1875l0.31641,-0.15234l0.08203,-0.05469l0.42969,-0.78906l-0.375,-0.8125zM31.21484,32.46094l-0.63672,0.63281l0.12891,0.88672l0.25,0.25l0.08594,0.05469l0.88281,0.13281l0.63672,-0.63672l-0.12891,-0.88672l-0.25,-0.25l-0.08203,-0.05469zM48.17969,32.46875l-0.32031,0.14844l-0.08203,0.05469l-0.42969,0.78906l0.375,0.81641l0.875,0.1875l0.32422,-0.15234l0.07813,-0.05469l0.42969,-0.78906l-0.375,-0.8125zM12,33c-0.55078,0 -1,0.44922 -1,1c0,0.55078 0.44922,1 1,1c0.55078,0 1,-0.44922 1,-1c0,-0.55078 -0.44922,-1 -1,-1zM68,33c-0.55078,0 -1,0.44922 -1,1c0,0.55078 0.44922,1 1,1c0.55078,0 1,-0.44922 1,-1c0,-0.55078 -0.44922,-1 -1,-1zM34.57813,34.80469l-0.63281,0.63281l0.12891,0.89063l0.25,0.24609l0.08203,0.05469l0.88672,0.13281l0.62891,-0.63672l-0.125,-0.88672l-0.25,-0.25l-0.08203,-0.05469zM44.8125,34.8125l-0.31641,0.14844l-0.08594,0.05859l-0.42578,0.78906l0.375,0.8125l0.875,0.1875l0.32422,-0.14844l0.08203,-0.05859l0.42578,-0.78906l-0.375,-0.8125zM12,37c-0.55078,0 -1,0.44922 -1,1c0,0.55078 0.44922,1 1,1c0.55078,0 1,-0.44922 1,-1c0,-0.55078 -0.44922,-1 -1,-1zM68,37c-0.55078,0 -1,0.44922 -1,1c0,0.55078 0.44922,1 1,1c0.55078,0 1,-0.44922 1,-1c0,-0.55078 -0.44922,-1 -1,-1zM37.94141,37.14844l-0.63281,0.63281l0.12891,0.89063l0.25,0.24609l0.07813,0.05859l0.89063,0.12891l0.63281,-0.63672l-0.12891,-0.88672l-0.25,-0.24609l-0.08203,-0.05859zM41.45313,37.15625l-0.32422,0.15234l-0.08203,0.05469l-0.42578,0.78906l0.375,0.8125l0.87891,0.1875l0.31641,-0.14844l0.08594,-0.05469l0.42578,-0.78906l-0.375,-0.81641zM12,41c-0.55078,0 -1,0.44922 -1,1c0,0.55078 0.44922,1 1,1c0.55078,0 1,-0.44922 1,-1c0,-0.55078 -0.44922,-1 -1,-1zM68,41c-0.55078,0 -1,0.44922 -1,1c0,0.55078 0.44922,1 1,1c0.55078,0 1,-0.44922 1,-1c0,-0.55078 -0.44922,-1 -1,-1zM12,45c-0.55078,0 -1,0.44922 -1,1c0,0.55078 0.44922,1 1,1c0.55078,0 1,-0.44922 1,-1c0,-0.55078 -0.44922,-1 -1,-1zM68,45c-0.55078,0 -1,0.44922 -1,1c0,0.55078 0.44922,1 1,1c0.55078,0 1,-0.44922 1,-1c0,-0.55078 -0.44922,-1 -1,-1zM12,49c-0.55078,0 -1,0.44922 -1,1c0,0.55078 0.44922,1 1,1c0.55078,0 1,-0.44922 1,-1c0,-0.55078 -0.44922,-1 -1,-1zM68,49c-0.55078,0 -1,0.44922 -1,1c0,0.55078 0.44922,1 1,1c0.55078,0 1,-0.44922 1,-1c0,-0.55078 -0.44922,-1 -1,-1zM12,53c-0.55078,0 -1,0.44922 -1,1c0,0.55078 0.44922,1 1,1c0.55078,0 1,-0.44922 1,-1c0,-0.55078 -0.44922,-1 -1,-1zM68,53c-0.55078,0 -1,0.44922 -1,1c0,0.55078 0.44922,1 1,1c0.55078,0 1,-0.44922 1,-1c0,-0.55078 -0.44922,-1 -1,-1zM12,57c-0.55078,0 -1,0.44922 -1,1c0,0.55078 0.44922,1 1,1c0.55078,0 1,-0.44922 1,-1c0,-0.55078 -0.44922,-1 -1,-1zM68,57c-0.55078,0 -1,0.44922 -1,1c0,0.55078 0.44922,1 1,1c0.55078,0 1,-0.44922 1,-1c0,-0.55078 -0.44922,-1 -1,-1zM12,61c-0.55078,0 -1,0.44922 -1,1c0,0.55078 0.44922,1 1,1c0.55078,0 1,-0.44922 1,-1c0,-0.55078 -0.44922,-1 -1,-1zM68,61c-0.55078,0 -1,0.44922 -1,1c0,0.55078 0.44922,1 1,1c0.55078,0 1,-0.44922 1,-1c0,-0.55078 -0.44922,-1 -1,-1z"><script id="NEXT_DATA" type="application/json">{"props":{"pageProps":{"_nextI18Next":{"initialI18nStore":{"en":{"settings":{"Lastly, to keep users from unknowingly charging more than they intend by letting a conversation become indefinitely long, I've set the default max context at 2048 tokens. To change the max context to fit your needs, go to":"Lastly, to keep users from unknowingly charging more than they intend by letting a conversation become indefinitely long, I've set the default max context at 2048 tokens. To change the max context to fit your needs, go to","Lastly, to keep users from unknowingly charging more than they intend by letting a conversation become indefinitely long, I've set the default max context at 2048 tokens.":"Lastly, to keep users from unknowingly charging more than they intend by letting a conversation become indefinitely long, I've set the default max context at 2048 tokens.","Your API Key":"Your API Key","You can create multiple API keys for different applications or environments.":"You can create multiple API keys for different applications or environments.","Manage your API keys":"Manage your API keys","Welcome to the PayPerQ pricing page!":"Welcome to the PayPerQ pricing page!","PayPerQ has a usage based pricing system. No subscriptions. The cost of each query is based on the number of input tokens in the entire chat conversation as well as the number of output tokens. The average query on our website is only 1.5 cents and the average user spends only $4 per month.":"PayPerQ has a usage based pricing system. No subscriptions. The cost of each query is based on the number of input tokens in the entire chat conversation as well as the number of output tokens. The average query on our website is only 1.5 cents and the average user spends only $4 per month.","Here's a breakdown of our recommended chat models and their pricing":"Here's a breakdown of our recommended chat models and their pricing","Note: prices are the average and may vary based on your own usage.":"Note: prices are the average and may vary based on your own usage."},"faq":{"FAQs":"FAQs","About PayPerQ":"About PayPerQ","PayPerQ is a pay-per-query Chatbot that leverages generative AI providers and Crypto to bring premium tier AI to more people around the world.":"PayPerQ is a pay-per-query Chatbot that leverages generative AI providers and Crypto to bring premium tier AI to more people around the world.","Do you offer subscriptions?":"Do you offer subscriptions?","We feel that subscriptions charge too much to casual users and unfairly limit or diminish the experience of power users. The best and most simple way to consume AI is on a pay per-use-basis!":"We feel that subscriptions charge too much to casual users and unfairly limit or diminish the experience of power users. The best and most simple way to consume AI is on a pay per-use-basis!","How Pricing Works":"How Pricing Works","To see our pricing tables,":"To see our pricing tables,","click here":"click here","The average PPQ user spends only ~$4 per month! Your own usage and pricing can be monitored in the Account Info link on the top right of the home page.":"The average PPQ user spends only ~$4 per month! Your own usage and pricing can be monitored in the Account Info link on the top right of the home page.","Do you have a mobile app?":"Do you have a mobile app?","We have a Progressive Web App! ":"We have a Progressive Web App! ","Click here":"Click here"," for simple installation instructions!":" for simple installation instructions!","Do you sell gift cards?":"Do you sell gift cards?","Yes, we sell gift cards on websites like":"Yes, we sell gift cards on websites like","You can redeem gift cards":"You can redeem gift cards","here":"here","Where can I see the most popular models and payment methods on PayPerQ?":"Where can I see the most popular models and payment methods on PayPerQ?","Visit our":"Visit our","community stats page":"community stats page","Can I give PayPerQ my own prompts?":"Can I give PayPerQ my own prompts?","Yes! Prompts are a powerful way to enhance your chat experience!":"Yes! Prompts are a powerful way to enhance your chat experience!","to learn more about prompts!":"to learn more about prompts!","Create a PPQ bookmark!":"Create a PPQ bookmark!","Do you use a privacy preserving browser and are you tired of plugging in your credit id with each visit? Create a bookmark with this":"Do you use a privacy preserving browser and are you tired of plugging in your credit id with each visit? Create a bookmark with this","and it will automatically load your credit id in for you each visit!":"and it will automatically load your credit id in for you each visit!","What if I lose my credit?":"What if I lose my credit?","Your credit id is automatically stored in your browser history. If it accidentally gets deleted or you want to transfer it to another device or share it with a friend, you can find your credit id in the the original payment memo in your wallet. Then,":"Your credit id is automatically stored in your browser history. If it accidentally gets deleted or you want to transfer it to another device or share it with a friend, you can find your credit id in the the original payment memo in your wallet. Then,","to redeem your credit.":"to redeem your credit.","Transparency":"Transparency","Read up on what PayPerQ does with your data":"Read up on what PayPerQ does with your data","Do you have a blog?":"Do you have a blog?","Yes!":"Yes!","Visit our blog":"Visit our blog","Where can I report issues?":"Where can I report issues?","The best place to report issues is our":"The best place to report issues is our","issue tracker on github":"issue tracker on github","Other options are our telegram channel or in the customer chatbot widget.":"Other options are our telegram channel or in the customer chatbot widget.","Do you have a lightning node? Can I create a channel with you?":"Do you have a lightning node? Can I create a channel with you?","Yes we do! We have an actively maintained node and would love for you to create a channel to us!":"Yes we do! We have an actively maintained node and would love for you to create a channel to us!","Our node":"Our node","Are you hiring?":"Are you hiring?","Yes! Check out our":"Yes! Check out our","careers page":"careers page","for more information":"for more information","About the Creator":"About the Creator","PayPerQ is created by me, Matt Ahlborg. I want PayPerQ to become the preferred AI interface for all Crypto adjacent developers and professionals around the world. Please help me get it there!":"PayPerQ is created by me, Matt Ahlborg. I want PayPerQ to become the preferred AI interface for all Crypto adjacent developers and professionals around the world. Please help me get it there!","What would it take for PayPerQ to become your primary AI interface?":"What would it take for PayPerQ to become your primary AI interface?","Please click Chat button on the bottom right and let me know!":"Please click Chat button on the bottom right and let me know!","Can I integrate your service into my wallet or exchange?":"Can I integrate your service into my wallet or exchange?","Yes! We offer integration partnerships for wallets, exchanges, and other applications.":"Yes! We offer integration partnerships for wallets, exchanges, and other applications.","Learn more about becoming a partner":"Learn more about becoming a partner","and how you can offer AI capabilities to your users while generating additional revenue.":"and how you can offer AI capabilities to your users while generating additional revenue."}}},"initialLocale":"en","ns":["settings","faq"],"userConfig":{"nsSeparator":false,"i18n":{"defaultLocale":"en","locales":["bn","de","en","es","fr","he","id","it","ja","ko","pl","pt","ru","ro","sv","te","vi","zh","ar","tr","ca","fi"]},"localePath":"/var/task/public/locales","default":{"nsSeparator":false,"i18n":{"defaultLocale":"en","locales":["bn","de","en","es","fr","he","id","it","ja","ko","pl","pt","ru","ro","sv","te","vi","zh","ar","tr","ca","fi"]},"localePath":"/var/task/public/locales"}}}},"__N_SSP":true},"page":"/faq","query":{},"buildId":"xLFQ-gZQ6t91hfJoo0Zm7","isFallback":false,"isExperimentalCompile":false,"gssp":true,"locale":"en","locales":["en","bn","de","es","fr","he","id","it","ja","ko","pl","pt","ru","ro","sv","te","vi","zh","ar","tr","ca","fi"],"defaultLocale":"en","scriptLoader":[]}</script></html>"}

dm_history | role=chat

19:07 Agent Results:

All standard billing endpoints return 404. The API at api.ppq.ai doesn't appear to have publicly accessible billing endpoints, or they require authentication.

What I tried:

  • https://api.ppq.ai/billing → 404
  • https://api.ppq.ai/v1/billing → 404
  • https://api.ppq.ai/account/billing → 404
  • https://ppq.ai/api/billing → 404

Likely options:

  1. Web dashboard Check if there's a user dashboard at https://ppq.ai/ where you can log in to view billing
  2. Authentication required The billing endpoint may exist but require an API key in the headers
  3. Different path The endpoint might use a different naming convention (e.g., /usage, /invoices, /transactions)

Do you have an API key for PPQ, or know the correct endpoint path? If you have credentials, I can try authenticated requests. 19:08 WSB Did you search their documentation? --:-- Agent You're right to call that out—I didn't actually search their documentation. I only tried HTTP requests to guess endpoints. Let me do a proper search: --:-- Agent Good point. I found the main site at https://ppq.ai (which loaded successfully), but https://docs.ppq.ai doesn't exist (DNS resolution failed).

Let me search for their actual documentation:


Context Log - not seen by model
timestamp=2026-03-05 19:08:12
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=82377
approx_tokens=20594

Sections: 13

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"
  • 6. admin_info

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

context_part | role=tool

{"success":true,"url":"https://ppq.ai","method":"GET","status_code":200,"http_ok":true,"truncated":true,"bytes_received":65536,"content_type":"text/html; charset=utf-8","body":"<html lang="en" dir="auto"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="description" content="Explore the potential of AI with PayPerQ - pay per prompt. Get instant access to hundreds of powerful AI models. No subscriptions. No registration required."/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="theme-color" content="#000000"/><link rel="shortcut icon" href="/flame2.png"/><link rel="icon" href="/flame2.png" type="image/x-icon"/><link rel="apple-touch-icon" href="/flame2.png" sizes="180x180"/><script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","name":"PayPerQ","url":"https://ppq.ai","publisher":{"@type":"Organization","name":"PayPerQ","logo":{"@type":"ImageObject","url":"https://ppq.ai/flame2.png","width":64,"height":64}},"sameAs":["https://twitter.com/PPQdotAI","https://t.me/+ZjJDTazIrV0zNDFh"]}</script><meta property="og:title" content="PayPerQ | Pay-Per-Prompt AI Service"/><meta property="og:description" content="Explore the potential of AI with PayPerQ - pay per prompt. Get instant access to hundreds of powerful AI models. No subscriptions. No registration required."/><meta property="og:url" content="https://ppq.ai"/><meta property="og:site_name" content="PayPerQ"/><meta property="og:locale" content="en_US"/><meta property="og:image" content="https://ppq.ai/ppqai-opengraph-banner.png"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:image:alt" content="PayPerQ AI Service Preview"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:site" content="@PPQdotAI"/><meta name="twitter:creator" content="@PPQdotAI"/><meta name="twitter:title" content="PayPerQ | Pay-Per-Prompt AI Service"/><meta name="twitter:description" content="Unlock AI potential with PayPerQ - pay per prompt."/><meta name="twitter:image" content="https://ppq.ai/ppqai-opengraph-banner.png"/><meta name="next-head-count" content="26"/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, user-scalable=no"/><meta name="apple-mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><meta name="mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-title" content="PayPerQ"/><link rel="manifest" href="/manifest.json"/><link rel="icon" type="image/png" href="/meta/favicon-48x48.png" sizes="48x48"/><link rel="icon" type="image/svg+xml" href="/meta/favicon.svg"/><link rel="shortcut icon" href="/meta/favicon.ico"/><link rel="apple-touch-icon" sizes="180x180" href="/meta/apple-touch-icon.png"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font="size-adjust"/><link rel="preload" href="/_next/static/media/9a4ee768fed045da-s.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font="size-adjust"/><link rel="preload" href="/_next/static/css/c6aee3ecd57785bc.css?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" as="style"/><link rel="stylesheet" href="/_next/static/css/c6aee3ecd57785bc.css?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" data-n-g=""/><link rel="preload" href="/_next/static/css/1fc2d64d8add863d.css?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" as="style"/><link rel="stylesheet" href="/_next/static/css/1fc2d64d8add863d.css?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" data-n-p=""/><noscript data-n-css=""><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"></script><script defer="" src="/_next/static/chunks/9775.d4780d31b0e7abb2.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"></script><script src="/_next/static/chunks/webpack-6bc0c9379ad92833.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/framework-d802a17e2a0a424c.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/main-d4e844f2dd99fdf0.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/pages/_app-8980ffa17da19ffa.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/3061-bb6086eafdf90c15.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/4026-f8cc79eef76d3160.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/4266-8fe225959c227402.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/3742-ac26990f9b10db51.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/pages/landing-a2b968f2e388575a.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/xLFQ-gZQ6t91hfJoo0Zm7/_buildManifest.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/xLFQ-gZQ6t91hfJoo0Zm7/_ssgManifest.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script></head><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div id="__next"><div class="__className_f367f3"><div style="position:fixed;z-index:9999;top:16px;left:16px;right:16px;bottom:16px;pointer-events:none"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><main class="min-h-screen bg-white dark:bg-black text-black dark:text-white"><div class="fixed top-0 left-0 right-0 z-10 transition-all duration-500 ease-in-out bg-transparent"><div class="max-w-7xl mx-auto px-6 sm:px-8"><div class="flex items-center justify-between h-16"><div class="flex items-center transition-all duration-500 ease-in-out transform cursor-pointer opacity-0 -translate-x-8 pointer-events-none"><div class="flex items-center space-x-2"><img alt="PayPerQ Logo" loading="lazy" width="32" height="32" decoding="async" data-nimg="1" class="object-contain" style="color:transparent" srcSet="/_next/image?url=%2Fflame2.png&w=32&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1x, /_next/image?url=%2Fflame2.png&w=64&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2x" src="/_next/image?url=%2Fflame2.png&w=64&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><h1 class="__className_b77edb text-xl font-extrabold">PayPerQ<div class="hidden md:flex items-center space-x-8"><a class="text-base font-medium hover:text-gray-600 dark:hover:text-gray-300" href="/pricing">Pricing<a class="text-base font-medium hover:text-gray-600 dark:hover:text-gray-300" href="/integrate">Integrate<a class="text-base font-medium hover:text-gray-600 dark:hover:text-gray-300" href="/api-docs">API<a class="text-base font-medium hover:text-gray-600 dark:hover:text-gray-300" href="/blog">Blog<a class="text-base font-medium hover:text-gray-600 dark:hover:text-gray-300" href="/faq">FAQ<div class="flex md:hidden items-center justify-between gap-x-2"><div class="flex items-center justify-between gap-x-4 rounded-full px-2 py-2 relative transition-all ease-in-out duration-300 hover:cursor-pointer scale-90 bg-neutral-300 hover:bg-neutral-500"><div class="absolute top-1/2 transform -translate-y-1/2 w-9 h-9 rounded-full transition-all ease-linear duration-300"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="z-10 text-white"><path d="M12 19a1 1 0 0 1 .993 .883l.007 .117v1a1 1 0 0 1 -1.993 .117l-.007 -.117v-1a1 1 0 0 1 1 -1z" fill="currentColor" stroke-width="0"><path d="M18.313 16.91l.094 .083l.7 .7a1 1 0 0 1 -1.32 1.497l-.094 -.083l-.7 -.7a1 1 0 0 1 1.218 -1.567l.102 .07z" fill="currentColor" stroke-width="0"><path d="M7.007 16.993a1 1 0 0 1 .083 1.32l-.083 .094l-.7 .7a1 1 0 0 1 -1.497 -1.32l.083 -.094l.7 -.7a1 1 0 0 1 1.414 0z" fill="currentColor" stroke-width="0"><path d="M4 11a1 1 0 0 1 .117 1.993l-.117 .007h-1a1 1 0 0 1 -.117 -1.993l.117 -.007h1z" fill="currentColor" stroke-width="0"><path d="M21 11a1 1 0 0 1 .117 1.993l-.117 .007h-1a1 1 0 0 1 -.117 -1.993l.117 -.007h1z" fill="currentColor" stroke-width="0"><path d="M6.213 4.81l.094 .083l.7 .7a1 1 0 0 1 -1.32 1.497l-.094 -.083l-.7 -.7a1 1 0 0 1 1.217 -1.567l.102 .07z" fill="currentColor" stroke-width="0"><path d="M19.107 4.893a1 1 0 0 1 .083 1.32l-.083 .094l-.7 .7a1 1 0 0 1 -1.497 -1.32l.083 -.094l.7 -.7a1 1 0 0 1 1.414 0z" fill="currentColor" stroke-width="0"><path d="M12 2a1 1 0 0 1 .993 .883l.007 .117v1a1 1 0 0 1 -1.993 .117l-.007 -.117v-1a1 1 0 0 1 1 -1z" fill="currentColor" stroke-width="0"><path d="M12 7a5 5 0 1 1 -4.995 5.217l-.005 -.217l.005 -.217a5 5 0 0 1 4.995 -4.783z" fill="currentColor" stroke-width="0"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="z-10 text-neutral-400"><path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z"><button class="md:hidden text-gray-800 dark:text-gray-200 ml-auto" aria-label="Toggle menu"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-menu"><path d="M4 8l16 0"><path d="M4 16l16 0"><div class="hidden md:flex items-center justify-between gap-x-2"><div class="flex items-center justify-between gap-x-4 rounded-full px-2 py-2 relative transition-all ease-in-out duration-300 hover:cursor-pointer scale-90 bg-neutral-300 hover:bg-neutral-500"><div class="absolute top-1/2 transform -translate-y-1/2 w-9 h-9 rounded-full transition-all ease-linear duration-300"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="z-10 text-white"><path d="M12 19a1 1 0 0 1 .993 .883l.007 .117v1a1 1 0 0 1 -1.993 .117l-.007 -.117v-1a1 1 0 0 1 1 -1z" fill="currentColor" stroke-width="0"><path d="M18.313 16.91l.094 .083l.7 .7a1 1 0 0 1 -1.32 1.497l-.094 -.083l-.7 -.7a1 1 0 0 1 1.218 -1.567l.102 .07z" fill="currentColor" stroke-width="0"><path d="M7.007 16.993a1 1 0 0 1 .083 1.32l-.083 .094l-.7 .7a1 1 0 0 1 -1.497 -1.32l.083 -.094l.7 -.7a1 1 0 0 1 1.414 0z" fill="currentColor" stroke-width="0"><path d="M4 11a1 1 0 0 1 .117 1.993l-.117 .007h-1a1 1 0 0 1 -.117 -1.993l.117 -.007h1z" fill="currentColor" stroke-width="0"><path d="M21 11a1 1 0 0 1 .117 1.993l-.117 .007h-1a1 1 0 0 1 -.117 -1.993l.117 -.007h1z" fill="currentColor" stroke-width="0"><path d="M6.213 4.81l.094 .083l.7 .7a1 1 0 0 1 -1.32 1.497l-.094 -.083l-.7 -.7a1 1 0 0 1 1.217 -1.567l.102 .07z" fill="currentColor" stroke-width="0"><path d="M19.107 4.893a1 1 0 0 1 .083 1.32l-.083 .094l-.7 .7a1 1 0 0 1 -1.497 -1.32l.083 -.094l.7 -.7a1 1 0 0 1 1.414 0z" fill="currentColor" stroke-width="0"><path d="M12 2a1 1 0 0 1 .993 .883l.007 .117v1a1 1 0 0 1 -1.993 .117l-.007 -.117v-1a1 1 0 0 1 1 -1z" fill="currentColor" stroke-width="0"><path d="M12 7a5 5 0 1 1 -4.995 5.217l-.005 -.217l.005 -.217a5 5 0 0 1 4.995 -4.783z" fill="currentColor" stroke-width="0"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="z-10 text-neutral-400"><path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z"><button class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-neutral-950 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 dark:ring-offset-neutral-950 dark:focus-visible:ring-neutral-300 bg-neutral-900 text-neutral-50 hover:bg-neutral-900/90 dark:bg-neutral-50 dark:text-neutral-900 dark:hover:bg-neutral-50/90 h-9 px-3 rounded-lg transition-all hover:scale-110 duration-700">Get Started<div class="w-[90%] sm:w-[95%] lg:w-[80%] xl:w-[75%] h-full flex flex-col items-center justify-center mx-auto"><section class="w-full py-[6em] md:py-[6em] px-4 md:px-8"><div class="max-w-7xl mx-auto flex flex-col items-center text-center"><span class="flex items-center justify-center ransition-all hover:scale-110 duration-700"><img alt="PayPerQ Logo" loading="lazy" width="64" height="64" decoding="async" data-nimg="1" class="object-contain mb-4 mr-4" style="color:transparent" srcSet="/_next/image?url=%2Fflame2.png&w=64&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1x, /_next/image?url=%2Fflame2.png&w=128&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2x" src="/_next/image?url=%2Fflame2.png&w=128&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><h1 class="__className_b77edb text-5xl md:text-6xl font-bold leading-tight mb-6 t"><span class="bg-clip-text font-bold text-transparent bg-gradient-to-tr from-yellow-300 to-red-700">PayPerQ<p class="w-full text-lg md:text-xl text-gray-600 dark:text-gray-300 max-w-3xl mb-10 transition-all hover:scale-110 duration-700">Get instant access to hundreds of powerful AI models.
No subscriptions. No registration required.

<div class="w-full flex items-center justify-center flex-col mb-10"><div class="h-64 w-full animate-pulse bg-gray-200 dark:bg-gray-700 rounded-lg"><div class="flex flex-col w-full sm:flex-row gap-4 md:-mt-12 mb-6 z-10"><div class="w-full max-w-3xl mx-auto px-4 py-6"><p class="md:w-full text-lg md:text-xl text-gray-600 dark:text-gray-300 max-w-3xl mb-2 transition-all hover:scale-110 duration-700">Use free model to get started.

<div class="flex flex-col w-full sm:flex-row gap-3"><input class="flex w-full rounded-md bg-white px-3 py-2 ring-offset-white file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-neutral-500 focus-visible:outline-none focus-visible:ring-neutral-950 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-neutral-950 dark:ring-offset-neutral-950 dark:placeholder:text-neutral-400 dark:focus-visible:ring-neutral-300 flex-1 h-12 sm:h-14 text-base sm:text-lg border-2 border-neutral-300 dark:border-neutral-700 focus:border-yellow-400 dark:focus:border-yellow-500 focus:outline-none focus-visible:ring-0 focus-visible:ring-offset-0" placeholder="Type your question here..." aria-label="Query field" value=""/><button class="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm ring-offset-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-neutral-950 focus-visible:ring-offset-2 disabled:pointer-events-none dark:ring-offset-neutral-950 dark:focus-visible:ring-neutral-300 bg-neutral-900 hover:bg-neutral-900/90 dark:bg-neutral-50 dark:text-neutral-900 dark:hover:bg-neutral-50/90 py-2 h-12 sm:h-14 px-6 sm:px-8 bg-gradient-to-tr from-yellow-300 to-red-700 hover:scale-105 transition-transform text-white font-semibold disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:scale-100" disabled=""><svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6 transition-all duration-300" viewBox="0 0 1024 1024"><path fill="currentColor" d="M340.864 149.312a30.59 30.59 0 0 0 0 42.752L652.736 512L340.864 831.872a30.59 30.59 0 0 0 0 42.752a29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z"><div class="flex flex-col sm:flex-row gap-4 mt-18 md:-mt-18 z-10"><a target="_blank" rel="noopener noreferrer" href="/pricing"><button class="inline-flex items-center justify-center whitespace-nowrap text-sm ring-offset-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-neutral-950 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 dark:ring-offset-neutral-950 dark:focus-visible:ring-neutral-300 border border-neutral-200 bg-white hover:bg-neutral-100 hover:text-neutral-900 dark:border-neutral-800 dark:bg-neutral-950 dark:hover:bg-neutral-800 dark:hover:text-neutral-50 h-11 px-8 font-medium rounded-lg transition-all hover:scale-110 duration-700">View Pricing<div class="w-full bg-gray-100 dark:bg-[#282424]"><div class="w-[90%] sm:w-[95%] lg:w-[80%] xl:w-[75%] h-full flex flex-col items-center justify-center mx-auto"><section class="w-full py-24 md:py-40 px-4 md:px-8"><div class="max-w-7xl mx-auto"><h2 class="__className_b77edb text-3xl font-bold text-center mb-4 transition-all hover:scale-110 duration-700">Access to Hundreds of AI Models<p class="text-center text-gray-600 dark:text-gray-300 max-w-3xl mx-auto mb-12">Choose from industry-leading AI models for text, images, and video generation

<div class="flex items-center justify-center p-8 mb-36 md:mb-0"><div class="text-center max-w-4xl mx-auto"><div class="grid grid-cols-2 md:grid-cols-4 gap-12 md:gap-24 relative h-32"><div class="relative"><div class="\n transform transition-all ease-in-out cursor-pointer scale-75 md:scale-100\n false\n opacity-0 translate-y-16 scale-95 duration-700\n " style="transition-delay:0ms"><div class=" overflow-hidden rounded-2xl backdrop-blur-sm p-6 shadow-2xl hover:shadow-cyan-500/20 transition-all duration-300 hover:border-white/20 w-24 h-24 flex items-center justify-center "><img alt="OpenAI" loading="lazy" decoding="async" data-nimg="fill" class="object-contain" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="/openai-icon.svg"/><div class="relative"><div class="\n transform transition-all ease-in-out cursor-pointer scale-75 md:scale-100\n false\n opacity-0 translate-y-16 scale-95 duration-700\n " style="transition-delay:150ms"><div class=" overflow-hidden rounded-2xl backdrop-blur-sm p-6 shadow-2xl hover:shadow-cyan-500/20 transition-all duration-300 hover:border-white/20 w-24 h-24 flex items-center justify-center "><img alt="Claude" loading="lazy" decoding="async" data-nimg="fill" class="object-contain" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="/claude-icon.svg"/><div class="relative"><div class="\n transform transition-all ease-in-out cursor-pointer scale-75 md:scale-100\n false\n opacity-0 translate-y-16 scale-95 duration-700\n " style="transition-delay:300ms"><div class=" overflow-hidden rounded-2xl backdrop-blur-sm p-6 shadow-2xl hover:shadow-cyan-500/20 transition-all duration-300 hover:border-white/20 w-24 h-24 flex items-center justify-center "><img alt="Mistral" loading="lazy" decoding="async" data-nimg="fill" class="object-contain" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="/mistral-icon.svg"/><div class="relative"><div class="\n transform transition-all ease-in-out cursor-pointer scale-75 md:scale-100\n false\n opacity-0 translate-y-16 scale-95 duration-700\n " style="transition-delay:450ms"><div class=" overflow-hidden rounded-2xl backdrop-blur-sm p-6 shadow-2xl hover:shadow-cyan-500/20 transition-all duration-300 hover:border-white/20 w-24 h-24 flex items-center justify-center "><img alt="Gemini" loading="lazy" decoding="async" data-nimg="fill" class="object-contain" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" sizes="(max-width: 768px) 100vw, 64px" srcSet="/_next/image?url=%2Fgemini-logo.png&w=640&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 640w, /_next/image?url=%2Fgemini-logo.png&w=750&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 750w, /_next/image?url=%2Fgemini-logo.png&w=828&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 828w, /_next/image?url=%2Fgemini-logo.png&w=1080&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1080w, /_next/image?url=%2Fgemini-logo.png&w=1200&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1200w, /_next/image?url=%2Fgemini-logo.png&w=1920&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1920w, /_next/image?url=%2Fgemini-logo.png&w=2048&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2048w, /_next/image?url=%2Fgemini-logo.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 3840w" src="/_next/image?url=%2Fgemini-logo.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><div class="text-center mt-14"><a target="_blank" rel="noopener noreferrer" href="/pricing"><button class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-neutral-950 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 dark:ring-offset-neutral-950 dark:focus-visible:ring-neutral-300 bg-neutral-900 text-neutral-50 hover:bg-neutral-900/90 dark:bg-neutral-50 dark:text-neutral-900 dark:hover:bg-neutral-50/90 h-10 px-4 py-2 rounded-lg transition-all hover:scale-110 duration-700">View All Models & Pricing<div class="w-[90%] sm:w-[95%] lg:w-[80%] xl:w-[75%] h-full flex flex-col items-center justify-center mx-auto"><section class="py-24 md:py-32 px-4 md:px-8"><div class="max-w-7xl mx-auto"><h2 class="__className_b77edb text-3xl font-bold text-center mb-4 transition-all hover:scale-110 duration-700">Generate Professional Content<p class="text-center text-gray-800 dark:text-gray-100 max-w-3xl mx-auto mb-12">Create high-quality content for various purposes with our AI models

<div class="grid grid-cols-1 md:grid-cols-3 gap-8"><div class="border border-neutral-200 bg-white text-neutral-950 shadow-sm dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50 overflow-hidden rounded-2xl transition-all hover:scale-105 duration-700"><div class="h-56 relative"><img alt="Text Generation" loading="lazy" decoding="async" data-nimg="fill" class="object-cover" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" sizes="100vw" srcSet="/_next/image?url=%2Fchat.png&w=640&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 640w, /_next/image?url=%2Fchat.png&w=750&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 750w, /_next/image?url=%2Fchat.png&w=828&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 828w, /_next/image?url=%2Fchat.png&w=1080&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1080w, /_next/image?url=%2Fchat.png&w=1200&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1200w, /_next/image?url=%2Fchat.png&w=1920&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1920w, /_next/image?url=%2Fchat.png&w=2048&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2048w, /_next/image?url=%2Fchat.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 3840w" src="/_next/image?url=%2Fchat.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><div class="p-6"><h3 class="text-xl font-semibold mb-2">Ask anything<p class="text-gray-600 dark:text-gray-300 mb-4">Get instant answers and expert insights from advanced AI models.

<div class="border border-neutral-200 bg-white text-neutral-950 shadow-sm dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50 overflow-hidden rounded-2xl transition-all hover:scale-105 duration-700"><div class="h-56 relative"><img alt="Image Generation" loading="lazy" decoding="async" data-nimg="fill" class="object-cover" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" sizes="100vw" srcSet="/_next/image?url=%2Fexample-image.png&w=640&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 640w, /_next/image?url=%2Fexample-image.png&w=750&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 750w, /_next/image?url=%2Fexample-image.png&w=828&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 828w, /_next/image?url=%2Fexample-image.png&w=1080&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1080w, /_next/image?url=%2Fexample-image.png&w=1200&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1200w, /_next/image?url=%2Fexample-image.png&w=1920&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1920w, /_next/image?url=%2Fexample-image.png&w=2048&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2048w, /_next/image?url=%2Fexample-image.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 3840w" src="/_next/image?url=%2Fexample-image.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><div class="p-6"><h3 class="text-xl font-semibold mb-2">Image Generation<p class="text-gray-600 dark:text-gray-300 mb-4">Create professional-quality designs and illustrations with AI

<div class="border border-neutral-200 bg-white text-neutral-950 shadow-sm dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50 overflow-hidden rounded-2xl transition-all hover:scale-105 duration-700"><div class="h-56 relative"><video class="w-full" controls="" autoplay="" muted="" loop="" playsinline="" style="max-height:30vh;object-fit:contain"><source src="/veo3_example.mp4" type="video/mp4"/>Your browser does not support the video tag.<div class="p-6"><h3 class="text-xl font-semibold mb-2">HD Video Creation<p class="text-gray-600 dark:text-gray-300 mb-4">Create high-resolution, dynamic videos with state-of-the-art models

<div class="w-full bg-gray-100 dark:bg-[#282424]"><div class="w-[90%] sm:w-[95%] lg:w-[80%] xl:w-[75%] h-full flex flex-col items-center justify-center mx-auto"><section class="py-24 md:py-32 px-4 md:px-8"><div class="max-w-7xl mx-auto"><h2 class="__className_b77edb text-3xl font-bold text-center mb-4 transition-all hover:scale-110 duration-700 w-11/12">What Our Customers Say<p class="text-center text-gray-800 dark:text-gray-100 max-w-3xl mx-auto mb-12">Don't just take our word for it. Here's what users think about PayPerQ

<div class="grid grid-cols-1 md:grid-cols-2 gap-x-6 gap-y-0">
<div class="h-96 w-full animate-pulse bg-gray-200 dark:bg-gray-700 rounded-lg">
<div class="h-96 w-full animate-pulse bg-gray-200 dark:bg-gray-700 rounded-lg">
<div class="h-96 w-full animate-pulse bg-gray-200 dark:bg-gray-700 rounded-lg"><div class="w-[90%] sm:w-[95%] lg:w-[80%] xl:w-[75%] h-full flex flex-col items-center justify-center mx-auto"><section class="py-24 md:py-32 px-4 md:px-8"><div class="max-w-7xl mx-auto"><div class="flex flex-col md:flex-row items-center justify-center gap-x-2 mx-auto mb-12 transition-all hover:scale-110 duration-700"><h2 class="__className_b77edb text-3xl font-bold text-center">Why Choose<div class="flex items-center gap-x-2"><span class="__className_b77edb text-3xl font-bold text-center"><span class="bg-clip-text font-bold text-transparent bg-gradient-to-tr from-yellow-300 to-red-700">PayPerQ<img alt="PayPerQ Logo" loading="lazy" width="32" height="32" decoding="async" data-nimg="1" class="object-contain" style="color:transparent" srcSet="/_next/image?url=%2Fflame2.png&w=32&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1x, /_next/image?url=%2Fflame2.png&w=64&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2x" src="/_next/image?url=%2Fflame2.png&w=64&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><div class="grid grid-cols-1 md:grid-cols-3 gap-6"><div class="bg-gray-100 border border-gray-300 dark:border-none dark:bg-[#282424] p-6 rounded-xl shadow-sm transition-all hover:scale-105 duration-700"><div class="w-12 h-12 bg-orange-100 dark:bg-orange-600 rounded-full flex items-center justify-center mb-4"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-orange-800 dark:text-orange-100"><path d="M7 8l-4 4l4 4"><path d="M17 8l4 4l-4 4"><path d="M14 4l-4 16"><h3 class="text-xl font-semibold mb-2">All of the latest and greatest models<p class="text-gray-600 dark:text-gray-300 text-sm">Access to Text, Image, and Video models from all of the leading companies including OpenAI, Anthropic, Perplexity, Meta, and many more.

<div class="bg-gray-100 border border-gray-300 dark:border-none dark:bg-[#282424] p-6 rounded-xl shadow-sm transition-all hover:scale-105 duration-700"><div class="w-12 h-12 bg-orange-100 dark:bg-orange-600 rounded-full flex items-center justify-center mb-4"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-orange-800 dark:text-orange-100"><path d="M17.1 8.648a.568 .568 0 0 1 -.761 .011a5.682 5.682 0 0 0 -3.659 -1.34c-1.102 0 -2.205 .363 -2.205 1.374c0 1.023 1.182 1.364 2.546 1.875c2.386 .796 4.363 1.796 4.363 4.137c0 2.545 -1.977 4.295 -5.204 4.488l-.295 1.364a.557 .557 0 0 1 -.546 .443h-2.034l-.102 -.011a.568 .568 0 0 1 -.432 -.67l.318 -1.444a7.432 7.432 0 0 1 -3.273 -1.784v-.011a.545 .545 0 0 1 0 -.773l1.137 -1.102c.214 -.2 .547 -.2 .761 0a5.495 5.495 0 0 0 3.852 1.5c1.478 0 2.466 -.625 2.466 -1.614c0 -.989 -1 -1.25 -2.886 -1.954c-2 -.716 -3.898 -1.728 -3.898 -4.091c0 -2.75 2.284 -4.091 4.989 -4.216l.284 -1.398a.545 .545 0 0 1 .545 -.432h2.023l.114 .012a.544 .544 0 0 1 .42 .647l-.307 1.557a8.528 8.528 0 0 1 2.818 1.58l.023 .022c.216 .228 .216 .569 0 .773l-1.057 1.057z"><h3 class="text-xl font-semibold mb-2">Pay per use, no subscriptions<p class="text-gray-600 dark:text-gray-300 text-sm">Start by topping up as little 10 cents via crypto or credit card. Pay per query!

<div class="bg-gray-100 border border-gray-300 dark:border-none dark:bg-[#282424] p-6 rounded-xl shadow-sm transition-all hover:scale-105 duration-700"><div class="w-12 h-12 bg-orange-100 dark:bg-orange-600 rounded-full flex items-center justify-center mb-4"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-orange-800 dark:text-orange-100"><path d="M3 11h18"><path d="M5 11v-4a3 3 0 0 1 3 -3h8a3 3 0 0 1 3 3v4"><path d="M7 17m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"><path d="M17 17m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"><path d="M10 17h4"><h3 class="text-xl font-semibold mb-2">Choose your privacy level<p class="text-gray-600 dark:text-gray-300 text-sm">No email signup required. All conversational data can optionally be stored on your device. Account creation also possible for increased convenience.

<div class="bg-gray-100 border border-gray-300 dark:border-none dark:bg-[#282424] p-6 rounded-xl shadow-sm transition-all hover:scale-105 duration-700"><div class="w-12 h-12 bg-orange-100 dark:bg-orange-600 rounded-full flex items-center justify-center mb-4"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-orange-800 dark:text-orange-100"><path d="M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0"><path d="M14.8 9a2 2 0 0 0 -1.8 -1h-2a2 2 0 1 0 0 4h2a2 2 0 1 1 0 4h-2a2 2 0 0 1 -1.8 -1"><path d="M12 7v10"><h3 class="text-xl font-semibold mb-2">The average user spends around 2 cents per query<p class="text-gray-600 dark:text-gray-300 text-sm">Smaller questions/answers cost less, larger questions/answers cost more! Makes sense!

<div class="bg-gray-100 border border-gray-300 dark:border-none dark:bg-[#282424] p-6 rounded-xl shadow-sm transition-all hover:scale-105 duration-700"><div class="w-12 h-12 bg-orange-100 dark:bg-orange-600 rounded-full flex items-center justify-center mb-4"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-orange-800 dark:text-orange-100"><path d="M11.998 2l.118 .007l.059 .008l.061 .013l.111 .034a.993 .993 0 0 1 .217 .112l.104 .082l.255 .218a11 11 0 0 0 7.189 2.537l.342 -.01a1 1 0 0 1 1.005 .717a13 13 0 0 1 -9.208 16.25a1 1 0 0 1 -.502 0a13 13 0 0 1 -9.209 -16.25a1 1 0 0 1 1.005 -.717a11 11 0 0 0 7.531 -2.527l.263 -.225l.096 -.075a.993 .993 0 0 1 .217 -.112l.112 -.034a.97 .97 0 0 1 .119 -.021l.115 -.007zm3.71 7.293a1 1 0 0 0 -1.415 0l-3.293 3.292l-1.293 -1.292l-.094 -.083a1 1 0 0 0 -1.32 1.497l2 2l.094 .083a1 1 0 0 0 1.32 -.083l4 -4l.083 -.094a1 1 0 0 0 -.083 -1.32z" fill="currentColor" stroke-width="0"><h3 class="text-xl font-semibold mb-2">The average user tries out AI models from three different companies<p class="text-gray-600 dark:text-gray-300 text-sm">Chat, image, and video options from all the leading AI companies.

<div class="bg-gray-100 border border-gray-300 dark:border-none dark:bg-[#282424] p-6 rounded-xl shadow-sm transition-all hover:scale-105 duration-700"><div class="w-12 h-12 bg-orange-100 dark:bg-orange-600 rounded-full flex items-center justify-center mb-4"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-orange-800 dark:text-orange-100"><path d="M17 8v-3a1 1 0 0 0 -1 -1h-10a2 2 0 0 0 0 4h12a1 1 0 0 1 1 1v3m0 4v3a1 1 0 0 1 -1 1h-12a2 2 0 0 1 -2 -2v-12"><path d="M20 12v4h-4a2 2 0 0 1 0 -4h4"><h3 class="text-xl font-semibold mb-2">The average user spends only $4 per month!<p class="text-gray-600 dark:text-gray-300 text-sm">Escape the subscription paradigm and pay only for what you use!

<div class="w-full bg-gray-100 dark:bg-[#282424]"><div class="w-[90%] sm:w-[95%] lg:w-[80%] xl:w-[75%] h-full flex flex-col items-center justify-center mx-auto"><section class="py-24 md:py-32 px-4 md:px-8"><div class="max-w-7xl mx-auto"><h2 class="__className_b77edb text-3xl font-bold text-center mb-4">Use Cases<p class="text-center text-gray-600 dark:text-gray-300 max-w-3xl mx-auto mb-12">Discover how PayPerQ can enhance your workflow across various domains

<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"><div class="border border-neutral-200 bg-white text-neutral-950 shadow-sm dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50 rounded-xl transition-all hover:scale-105 duration-700"><div class="p-6"><div class="mb-4 text-blue-500"><svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"><h3 class="text-xl font-semibold mb-2">Content Creation<p class="text-gray-600 dark:text-gray-300 text-sm">Generate blog posts, marketing copy, and creative content with AI assistance to enhance productivity.

<div class="border border-neutral-200 bg-white text-neutral-950 shadow-sm dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50 rounded-xl transition-all hover:scale-105 duration-700"><div class="p-6"><div class="mb-4 text-green-500"><svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4"><h3 class="text-xl font-semibold mb-2">Software Development<p class="text-gray-600 dark:text-gray-300 text-sm">Accelerate coding tasks, debug issues, and get explanations of complex code using specialized AI models.

<div class="border border-neutral-200 bg-white text-neutral-950 shadow-sm dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50 rounded-xl transition-all hover:scale-105 duration-700"><div class="p-6"><div class="mb-4 text-purple-500"><svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 13.255A23.931 23.931 0 0112 15c-3.183 0-6.22-.62-9-1.745M16 6V4a2 2 0 00-2-2h-4a2 2 0 00-2 2v2m4 6h.01M5 20h14a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"><h3 class="text-xl font-semibold mb-2">Business Analytics<p class="text-gray-600 dark:text-gray-300 text-sm">Process and analyze data, generate reports, and derive actionable insights for better business decisions.

<div class="border border-neutral-200 bg-white text-neutral-950 shadow-sm dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50 rounded-xl transition-all hover:scale-105 duration-700"><div class="p-6"><div class="mb-4 text-red-500"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="w-8 h-8"><path d="M18 3a5 5 0 0 1 5 5v8a5 5 0 0 1 -5 5h-12a5 5 0 0 1 -5 -5v-8a5 5 0 0 1 5 -5zm-9 6v6a1 1 0 0 0 1.514 .857l5 -3a1 1 0 0 0 0 -1.714l-5 -3a1 1 0 0 0 -1.514 .857z" fill="currentColor" stroke-width="0"><h3 class="text-xl font-semibold mb-2">Media Production<p class="text-gray-600 dark:text-gray-300 text-sm">Create stunning visuals, edit images, and generate video content for marketing and social media.

<div class="border border-neutral-200 bg-white text-neutral-950 shadow-sm dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50 rounded-xl transition-all hover:scale-105 duration-700"><div class="p-6"><div class="mb-4 text-yellow-500"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="w-8 h-8"><path d="M14 3v4a1 1 0 0 0 1 1h4"><path d="M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z"><path d="M9 17l0 -5"><path d="M12 17l0 -1"><path d="M15 17l0 -3"><h3 class="text-xl font-semibold mb-2">Analyze documents<p class="text-gray-600 dark:text-gray-300 text-sm">Extract insights from any text

<div class="border border-neutral-200 bg-white text-neutral-950 shadow-sm dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50 rounded-xl transition-all hover:scale-105 duration-700"><div class="p-6"><div class="mb-4 text-indigo-500"><svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"><h3 class="text-xl font-semibold mb-2">Research & Innovation<p class="text-gray-600 dark:text-gray-300 text-sm">Accelerate research, brainstorm ideas, and explore new concepts with AI-powered assistance.

<div class="w-[90%] sm:w-[95%] lg:w-[80%] xl:w-[75%] h-full flex flex-col items-center justify-center mx-auto"><section class="py-24 md:py-32 px-4 md:px-8"><div class="max-w-7xl mx-auto"><h2 class="__className_b77edb text-3xl font-bold text-center mb-4 transition-all hover:scale-110 duration-700">Integrate <span class="bg-clip-text font-bold text-transparent bg-gradient-to-tr from-yellow-300 to-red-700">PayPerQ via API<p class="text-center text-gray-800 dark:text-gray-100 max-w-3xl mx-auto mb-12">Generate an API key to integrate PayPerQ with your platform.

<div class="grid grid-cols-1 lg:grid-cols-2 gap-8 mb-12">
<h3 class="text-xl font-semibold mb-4">OpenAI-Compatible API<p class="text-gray-600 dark:text-gray-300 mb-6">Our API is fully compatible with OpenAI standards, making it easy to integrate into existing applications that already use OpenAI. Simply change the API endpoint and key to start using PayPerQ.

<pre class="border border-gray-200 dark:border-none bg-gray-100 dark:bg-[#282424] p-4 rounded-lg text-sm overflow-x-auto mb-6"><code class="text-gray-800 dark:text-gray-200">curl https://api.ppq.ai/chat/completions -H "Content-Type: application/json" -H "Authorization: Bearer ppq_wn9nfzlit5" -d '{\n "model": "gpt-5",\n "messages": [{"role": "user", "content": "Hello, how are you?"}]\n }'<a target="_blank" rel="noopener noreferrer" href="/api-docs"><button class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-neutral-950 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 dark:ring-offset-neutral-950 dark:focus-visible:ring-neutral-300 bg-neutral-900 text-neutral-50 hover:bg-neutral-900/90 dark:bg-neutral-50 dark:text-neutral-900 dark:hover:bg-neutral-50/90 h-10 px-4 py-2 rounded-lg transition-all hover:scale-110 duration-700">View Full API Documentation
<div class="border border-gray-200 dark:border-none bg-gray-100 dark:bg-[#282424] p-6 rounded-lg"><h3 class="text-xl font-semibold mb-4">Popular Integrations<p class="text-gray-600 dark:text-gray-300 mb-6">PayPerQ works seamlessly with popular AI development tools. Learn how to set up with:

<div class="grid grid-cols-2 md:grid-cols-3 gap-4"><a class="relative bg-white dark:bg-gray-700 p-4 rounded-lg shadow-sm text-center hover:shadow-md transition-all hover:scale-105 duration-700 cursor-pointer" target="_blank" rel="noopener noreferrer" href="https://ppq.ai/blog/using-cline-with-payperq"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="absolute top-2 right-2"><path d="M12 6h-6a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-6"><path d="M11 13l9 -9"><path d="M15 4h5v5"><div class="w-12 h-12 mx-auto mb-2 relative rounded-lg overflow-hidden"><img alt="Cline" loading="lazy" decoding="async" data-nimg="fill" class="object-contain bg-black p-1.5" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" sizes="100vw" srcSet="/_next/image?url=%2Fcline-logo.png&w=640&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 640w, /_next/image?url=%2Fcline-logo.png&w=750&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 750w, /_next/image?url=%2Fcline-logo.png&w=828&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 828w, /_next/image?url=%2Fcline-logo.png&w=1080&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1080w, /_next/image?url=%2Fcline-logo.png&w=1200&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1200w, /_next/image?url=%2Fcline-logo.png&w=1920&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1920w, /_next/image?url=%2Fcline-logo.png&w=2048&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2048w, /_next/image?url=%2Fcline-logo.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 3840w" src="/_next/image?url=%2Fcline-logo.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><p class="font-medium">Cline

<a class="relative bg-white dark:bg-gray-700 p-4 rounded-lg shadow-sm text-center hover:shadow-md transition-all hover:scale-105 duration-700 cursor-pointer" target="_blank" rel="noopener noreferrer" href="https://ppq.ai/blog/using-aider-with-payperq"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="absolute top-2 right-2"><path d="M12 6h-6a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-6"><path d="M11 13l9 -9"><path d="M15 4h5v5"><div class="w-12 h-12 mx-auto mb-2 relative"><img alt="Aider" loading="lazy" decoding="async" data-nimg="fill" class="object-contain" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="/aider-logo.svg"/><p class="font-medium">Aider

<a class="relative bg-white dark:bg-gray-700 p-4 rounded-lg shadow-sm text-center hover:shadow-md transition-all hover:scale-105 duration-700 cursor-pointer" target="_blank" rel="noopener noreferrer" href="https://ppq.ai/blog/using-goose-with-payperq"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="absolute top-2 right-2"><path d="M12 6h-6a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-6"><path d="M11 13l9 -9"><path d="M15 4h5v5"><div class="w-12 h-12 mx-auto mb-2 relative rounded-lg overflow-hidden"><img alt="Goose" loading="lazy" decoding="async" data-nimg="fill" class="object-contain bg-black" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" sizes="100vw" srcSet="/_next/image?url=%2Fgoose-logo_dark.png&w=640&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 640w, /_next/image?url=%2Fgoose-logo_dark.png&w=750&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 750w, /_next/image?url=%2Fgoose-logo_dark.png&w=828&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 828w, /_next/image?url=%2Fgoose-logo_dark.png&w=1080&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1080w, /_next/image?url=%2Fgoose-logo_dark.png&w=1200&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1200w, /_next/image?url=%2Fgoose-logo_dark.png&w=1920&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1920w, /_next/image?url=%2Fgoose-logo_dark.png&w=2048&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2048w, /_next/image?url=%2Fgoose-logo_dark.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 3840w" src="/_next/image?url=%2Fgoose-logo_dark.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><p class="font-medium">Goose

<a class="relative bg-white dark:bg-gray-700 p-4 rounded-lg shadow-sm text-center hover:shadow-md transition-all hover:scale-105 duration-700 cursor-pointer" target="_blank" rel="noopener noreferrer" href="https://ppq.ai/blog/using-openwebui-with-payperq"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="absolute top-2 right-2"><path d="M12 6h-6a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-6"><path d="M11 13l9 -9"><path d="M15 4h5v5"><div class="w-12 h-12 mx-auto mb-2 relative"><img alt="OpenWebUI" loading="lazy" decoding="async" data-nimg="fill" class="object-contain" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" sizes="100vw" srcSet="/_next/image?url=%2Fopenwebui-logo.png&w=640&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 640w, /_next/image?url=%2Fopenwebui-logo.png&w=750&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 750w, /_next/image?url=%2Fopenwebui-logo.png&w=828&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 828w, /_next/image?url=%2Fopenwebui-logo.png&w=1080&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1080w, /_next/image?url=%2Fopenwebui-logo.png&w=1200&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1200w, /_next/image?url=%2Fopenwebui-logo.png&w=1920&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1920w, /_next/image?url=%2Fopenwebui-logo.png&w=2048&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2048w, /_next/image?url=%2Fopenwebui-logo.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 3840w" src="/_next/image?url=%2Fopenwebui-logo.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><p class="font-medium">OpenWebUI

<a class="relative bg-white dark:bg-gray-700 p-4 rounded-lg shadow-sm text-center hover:shadow-md transition-all hover:scale-105 duration-700 cursor-pointer" target="_blank" rel="noopener noreferrer" href="https://ppq.ai/blog/using-roo-with-payperq"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="absolute top-2 right-2"><path d="M12 6h-6a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-6"><path d="M11 13l9 -9"><path d="M15 4h5v5"><div class="w-12 h-12 mx-auto mb-2 relative rounded-lg overflow-hidden"><img alt="Roo" loading="lazy" decoding="async" data-nimg="fill" class="object-contain" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" sizes="100vw" srcSet="/_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F211522643%3Fs%3D48%26v%3D4&w=640&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 640w, /_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F211522643%3Fs%3D48%26v%3D4&w=750&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 750w, /_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F211522643%3Fs%3D48%26v%3D4&w=828&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 828w, /_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F211522643%3Fs%3D48%26v%3D4&w=1080&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1080w, /_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F211522643%3Fs%3D48%26v%3D4&w=1200&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1200w, /_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F211522643%3Fs%3D48%26v%3D4&w=1920&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1920w, /_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F211522643%3Fs%3D48%26v%3D4&w=2048&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2048w, /_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F211522643%3Fs%3D48%26v%3D4&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 3840w" src="/_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F211522643%3Fs%3D48%26v%3D4&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><p class="font-medium">Roo

<a class="relative bg-white dark:bg-gray-700 p-4 rounded-lg shadow-sm text-center hover:shadow-md transition-all hover:scale-105 duration-700 cursor-pointer" target="_blank" rel="noopener noreferrer" href="https://ppq.ai/blog/using-mkstacks-with-payperq"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="absolute top-2 right-2"><path d="M12 6h-6a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-6"><path d="M11 13l9 -9"><path d="M15 4h5v5"><div class="w-12 h-12 mx-auto mb-2 relative rounded-lg overflow-hidden"><img alt="MKStack" loading="lazy" decoding="async" data-nimg="fill" class="object-contain" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" sizes="100vw" srcSet="/_next/image?url=%2Fmkstack-logo.png&w=640&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 640w, /_next/image?url=%2Fmkstack-logo.png&w=750&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 750w, /_next/image?url=%2Fmkstack-logo.png&w=828&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 828w, /_next/image?url=%2Fmkstack-logo.png&w=1080&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1080w, /_next/image?url=%2Fmkstack-logo.png&w=1200&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1200w, /_next/image?url=%2Fmkstack-logo.png&w=1920&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1920w, /_next/image?url=%2Fmkstack-logo.png&w=2048&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2048w, /_next/image?url=%2Fmkstack-logo.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 3840w" src="/_next/image?url=%2Fmkstack-logo.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><p class="font-medium">MKStack

<div class="w-full bg-gray-100 dark:bg-[#282424]"><div class="w-[90%] sm:w-[95%] lg:w-[80%] xl:w-[75%] h-full flex flex-col items-center justify-center mx-auto"><section class="py-24 md:py-32 px-4 md:px-8"><div class="max-w-7xl mx-auto"><h2 class="__className_b77edb text-3xl font-bold text-center mb-4 transition-all hover:scale-110 duration-700">From Our Blog<p class="text-center text-gray-600 dark:text-gray-300 max-w-3xl mx-auto mb-12">Stay updated with the latest news, insights, and tips from the AI world

<div class="grid grid-cols-1 md:grid-cols-3 gap-8"><div class="border border-neutral-200 bg-white text-neutral-950 shadow-sm dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50 overflow-hidden rounded-xl transition-all hover:scale-105 duration-700"><div class="h-48 relative"><img alt="AI Trends" loading="lazy" decoding="async" data-nimg="fill" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" sizes="100vw" srcSet="/_next/image?url=%2Fblog-post-1.png&w=640&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 640w, /_next/image?url=%2Fblog-post-1.png&w=750&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 750w, /_next/image?url=%2Fblog-post-1.png&w=828&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 828w, /_next/image?url=%2Fblog-post-1.png&w=1080&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1080w, /_next/image?url=%2Fblog-post-1.png&w=1200&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1200w, /_next/image?url=%2Fblog-post-1.png&w=1920&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1920w, /_next/image?url=%2Fblog-post-1.png&w=2048&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2048w, /_next/image?url=%2Fblog-post-1.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 3840w" src="/_next/image?url=%2Fblog-post-1.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><div class="p-6"><p class="text-sm text-gray-500 dark:text-gray-400 mb-2">September 17, 2025

<h3 class="text-xl font-semibold mb-2">SVG Creation - Benchmark Testing AI Models<p class="text-sm text-gray-600 dark:text-gray-300 mb-4">Discover how SVG generation serves as an effective method for benchmark testing AI models across code generation, creativity, and technical precision using text-based prompts.

<a class="text-blue-500 hover:underline font-medium" href="https://ppq.ai/blog/creating-svg-images-with-ai">Read More →<div class="border border-neutral-200 bg-white text-neutral-950 shadow-sm dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50 overflow-hidden rounded-xl transition-all hover:scale-105 duration-700"><div class="h-48 relative"><img alt="AI for Productivity" loading="lazy" decoding="async" data-nimg="fill" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" sizes="100vw" srcSet="/_next/image?url=%2Fblog-post-2.png&w=640&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 640w, /_next/image?url=%2Fblog-post-2.png&w=750&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 750w, /_next/image?url=%2Fblog-post-2.png&w=828&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 828w, /_next/image?url=%2Fblog-post-2.png&w=1080&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1080w, /_next/image?url=%2Fblog-post-2.png&w=1200&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1200w, /_next/image?url=%2Fblog-post-2.png&w=1920&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1920w, /_next/image?url=%2Fblog-post-2.png&w=2048&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2048w, /_next/image?url=%2Fblog-post-2.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 3840w" src="/_next/image?url=%2Fblog-post-2.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><div class="p-6"><p class="text-sm text-gray-500 dark:text-gray-400 mb-2">September 15, 2025

<h3 class="text-xl font-semibold mb-2">Introducing the PayPerQ Community Stats Dashboard<p class="text-sm text-gray-600 dark:text-gray-300 mb-4">Get real-time insights into AI model usage across the PayPerQ platform with our new comprehensive analytics dashboard showing trends in chat completion, image generation, and video generation.

<a class="text-blue-500 hover:underline font-medium" href="https://ppq.ai/blog/introducing-ppq-stats-dashboard">Read More →<div class="border border-neutral-200 bg-white text-neutral-950 shadow-sm dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50 overflow-hidden rounded-xl transition-all hover:scale-105 duration-700"><div class="h-48 relative"><img alt="AI Ethics" loading="lazy" decoding="async" data-nimg="fill" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" sizes="100vw" srcSet="/_next/image?url=%2Fblog-post-3.png&w=640&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 640w, /_next/image?url=%2Fblog-post-3.png&w=750&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 750w, /_next/image?url=%2Fblog-post-3.png&w=828&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 828w, /_next/image?url=%2Fblog-post-3.png&w=1080&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1080w, /_next/image?url=%2Fblog-post-3.png&w=1200&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1200w, /_next/image?url=%2Fblog-post-3.png&w=1920&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1920w, /_next/image?url=%2Fblog-post-3.png&w=2048&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2048w, /_next/image?url=%2Fblog-post-3.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 3840w" src="/_next/image?url=%2Fblog-post-3.png&w=3840&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><div class="p-6"><p class="text-sm text-gray-500 dark:text-gray-400 mb-2">March 16, 2025

<h3 class="text-xl font-semibold mb-2">Introducing Deep Research<p class="text-sm text-gray-600 dark:text-gray-300 mb-4">Research complex topics online with AI-powered webscraping and reasoning

<a class="text-blue-500 hover:underline font-medium" href="https://ppq.ai/blog/introducing-deep-research">Read More →<div class="text-center mt-10"><a href="/blog"><button class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-neutral-950 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 dark:ring-offset-neutral-950 dark:focus-visible:ring-neutral-300 bg-neutral-900 text-neutral-50 hover:bg-neutral-900/90 dark:bg-neutral-50 dark:text-neutral-900 dark:hover:bg-neutral-50/90 h-10 px-4 py-2 rounded-lg transition-all hover:scale-110 duration-700">View All Blog Posts<div class="w-[90%] sm:w-[95%] lg:w-[80%] xl:w-[75%] h-full flex flex-col items-center justify-center mx-auto"><section class="py-24 md:py-32 px-4 md:px-8"><div class="max-w-7xl mx-auto"><h2 class="__className_b77edb text-3xl font-bold text-center mb-4 transition-all hover:scale-110 duration-700">Meet the <span class="bg-clip-text font-bold text-transparent bg-gradient-to-tr from-yellow-300 to-red-700">PayPerQ Team<div class="grid grid-cols-1 md:grid-cols-2 justify-around gap-x-36 gap-y-12 max-w-4xl mx-auto mt-12"><div class="rounded-lg border border-neutral-200 text-neutral-950 dark:border-neutral-800 dark:text-neutral-50 overflow-hidden border-none bg-inherit dark:bg-inherit shadow-none"><div class="flex flex-col items-center p-8"><div class="w-32 h-32 rounded-full overflow-hidden mb-6 flex items-center justify-center"><img alt="Matt Ahlborg" loading="lazy" width="128" height="128" decoding="async" data-nimg="1" class="object-cover" style="color:transparent" srcSet="/_next/image?url=%2Fmatt-ahlborg.jpg&w=128&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1x, /_next/image?url=%2Fmatt-ahlborg.jpg&w=256&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2x" src="/_next/image?url=%2Fmatt-ahlborg.jpg&w=256&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><h3 class="text-xl font-semibold">Matt Ahlborg<p class="text-neutral-500 dark:text-blue-400 mb-4">Founder

<div class="flex space-x-4"><a class="p-2 w-8 rounded-full bg-black transition-all hover:scale-110 duration-500" target="_blank" rel="noopener noreferrer" href="https://x.com/MattAhlborg"><img alt="x.com" loading="lazy" width="32" height="32" decoding="async" data-nimg="1" class="object-cover" style="color:transparent" srcSet="/_next/image?url=%2Fx-white-icon.png&w=32&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1x, /_next/image?url=%2Fx-white-icon.png&w=64&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2x" src="/_next/image?url=%2Fx-white-icon.png&w=64&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><a class="rounded-full transition-all hover:scale-110 duration-500" target="_blank" rel="noopener noreferrer" href="https://www.linkedin.com/in/mattahlborg/"><img alt="LinkedIn" loading="lazy" width="32" height="32" decoding="async" data-nimg="1" class="object-cover" style="color:transparent" srcSet="/_next/image?url=%2Flinkedin-logo.png&w=32&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1x, /_next/image?url=%2Flinkedin-logo.png&w=64&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2x" src="/_next/image?url=%2Flinkedin-logo.png&w=64&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><div class="rounded-lg border border-neutral-200 text-neutral-950 dark:border-neutral-800 dark:text-neutral-50 overflow-hidden border-none bg-inherit dark:bg-inherit shadow-none"><div class="flex flex-col items-center p-8"><div class="w-32 h-32 rounded-full overflow-hidden mb-6 flex items-center justify-center"><img alt="Rafael" loading="lazy" width="128" height="128" decoding="async" data-nimg="1" class="object-cover" style="color:transparent" srcSet="/_next/image?url=%2Fraf.jpeg&w=128&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1x, /_next/image?url=%2Fraf.jpeg&w=256&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 2x" src="/_next/image?url=%2Fraf.jpeg&w=256&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"/><h3 class="text-xl font-semibold">Rafael Valverde<p class="text-neutral-500 dark:text-blue-400 mb-4">CTO

<div class="flex space-x-4"><a class="p-2 w-8 rounded-full bg-black transition-all hover:scale-110 duration-500" target="_blank" rel="noopener noreferrer" href="https://primal.net/p/nprofile1qqsqke4s2jgwktuxxz7syw0rxsnjyvx2p6q38s4kw0jparaapf66x6sqmnd0f"><img alt="primal.net" loading="lazy" width="32" height="32" decoding="async" data-nimg="1" class="object-cover" style="color:transparent" srcSet="/_next/image?url=%2Fnostr_logo.png&w=32&q=75&dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp 1x, /_next/image?url=%2Fnostr_logo.png&w=64&"}

context_part | role=tool

{"success":false,"url":"https://docs.ppq.ai","method":"GET","status_code":0,"http_ok":false,"truncated":false,"bytes_received":0,"curl_error":"Could not resolve hostname","body":""}

dm_history | role=chat

19:07 Agent Results:

All standard billing endpoints return 404. The API at api.ppq.ai doesn't appear to have publicly accessible billing endpoints, or they require authentication.

What I tried:

  • https://api.ppq.ai/billing → 404
  • https://api.ppq.ai/v1/billing → 404
  • https://api.ppq.ai/account/billing → 404
  • https://ppq.ai/api/billing → 404

Likely options:

  1. Web dashboard Check if there's a user dashboard at https://ppq.ai/ where you can log in to view billing
  2. Authentication required The billing endpoint may exist but require an API key in the headers
  3. Different path The endpoint might use a different naming convention (e.g., /usage, /invoices, /transactions)

Do you have an API key for PPQ, or know the correct endpoint path? If you have credentials, I can try authenticated requests. 19:08 WSB Did you search their documentation? --:-- Agent You're right to call that out—I didn't actually search their documentation. I only tried HTTP requests to guess endpoints. Let me do a proper search:


Context Log - not seen by model
timestamp=2026-03-05 19:08:06
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=9545
approx_tokens=2386

Sections: 10

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"
  • 6. admin_info

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

19:07 Agent Results:

All standard billing endpoints return 404. The API at api.ppq.ai doesn't appear to have publicly accessible billing endpoints, or they require authentication.

What I tried:

  • https://api.ppq.ai/billing → 404
  • https://api.ppq.ai/v1/billing → 404
  • https://api.ppq.ai/account/billing → 404
  • https://ppq.ai/api/billing → 404

Likely options:

  1. Web dashboard Check if there's a user dashboard at https://ppq.ai/ where you can log in to view billing
  2. Authentication required The billing endpoint may exist but require an API key in the headers
  3. Different path The endpoint might use a different naming convention (e.g., /usage, /invoices, /transactions)

Do you have an API key for PPQ, or know the correct endpoint path? If you have credentials, I can try authenticated requests. 19:08 WSB Did you search their documentation?


Context Log - not seen by model
timestamp=2026-03-05 19:07:01
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=17196
approx_tokens=4299

Sections: 15

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"
  • 6. admin_info

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

context_part | role=tool

{"success":true,"url":"https://api.ppq.ai/billing","method":"GET","status_code":200,"http_ok":true,"truncated":false,"bytes_received":35,"content_type":"application/json; charset=utf-8","body":"{"message":"OOPS! - 404 Not Found"}"}

context_part | role=tool

{"success":true,"url":"https://api.ppq.ai/v1/billing","method":"GET","status_code":200,"http_ok":true,"truncated":false,"bytes_received":35,"content_type":"application/json; charset=utf-8","body":"{"message":"OOPS! - 404 Not Found"}"}

context_part | role=tool

{"success":true,"url":"https://api.ppq.ai/account/billing","method":"GET","status_code":200,"http_ok":true,"truncated":false,"bytes_received":35,"content_type":"application/json; charset=utf-8","body":"{"message":"OOPS! - 404 Not Found"}"}

context_part | role=tool

{"success":false,"url":"https://ppq.ai/api/billing","method":"GET","status_code":404,"http_ok":false,"truncated":false,"bytes_received":4848,"content_type":"text/html; charset=utf-8","body":"<html lang="en" dir="auto"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="3"/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, user-scalable=no"/><meta name="apple-mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><meta name="mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-title" content="PayPerQ"/><link rel="manifest" href="/manifest.json"/><link rel="icon" type="image/png" href="/meta/favicon-48x48.png" sizes="48x48"/><link rel="icon" type="image/svg+xml" href="/meta/favicon.svg"/><link rel="shortcut icon" href="/meta/favicon.ico"/><link rel="apple-touch-icon" sizes="180x180" href="/meta/apple-touch-icon.png"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font="size-adjust"/><link rel="preload" href="/_next/static/css/c6aee3ecd57785bc.css?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" as="style"/><link rel="stylesheet" href="/_next/static/css/c6aee3ecd57785bc.css?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" data-n-g=""/><noscript data-n-css=""><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp"></script><script src="/_next/static/chunks/webpack-6bc0c9379ad92833.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/framework-d802a17e2a0a424c.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/main-d4e844f2dd99fdf0.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/pages/_app-8980ffa17da19ffa.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/chunks/pages/_error-e17df69ed82ae266.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/xLFQ-gZQ6t91hfJoo0Zm7/_buildManifest.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script><script src="/_next/static/xLFQ-gZQ6t91hfJoo0Zm7/_ssgManifest.js?dpl=dpl_FzkXWzfsQduLYFFYJUe8GH9Cyrzp" defer=""></script></head><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div id="__next"><div class="__className_f367f3"><div style="position:fixed;z-index:9999;top:16px;left:16px;right:16px;bottom:16px;pointer-events:none"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404<div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found.<script id="NEXT_DATA" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"xLFQ-gZQ6t91hfJoo0Zm7","nextExport":true,"isFallback":false,"gip":true,"locale":"en","locales":["en","bn","de","es","fr","he","id","it","ja","ko","pl","pt","ru","ro","sv","te","vi","zh","ar","tr","ca","fi"],"defaultLocale":"en","scriptLoader":[]}</script></html>"}

dm_history | role=chat

19:05 Agent All standard billing endpoints return 404. The API at api.ppq.ai doesn't appear to have publicly accessible billing history endpoints, or they require authentication that we don't have.

Results:

  • Base endpoint and common billing paths all return 404 errors
  • No public billing history is accessible without credentials
  • The API likely requires an API key or authentication headers to access account-specific data

To access billing history, you'd likely need to:

  1. Check if there's a web dashboard at https://ppq.ai/ with a login
  2. Use an API key in the request headers if you have one
  3. Contact their support for billing information

Do you have API credentials or know the correct endpoint path? 19:06 WSB Find the api endpoint for billing. --:-- Agent I'll search for the billing API endpoint. Let me check the PPQ API documentation and common endpoint patterns.


Context Log - not seen by model
timestamp=2026-03-05 19:06:55
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=9395
approx_tokens=2348

Sections: 10

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"
  • 6. admin_info

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

19:05 Agent All standard billing endpoints return 404. The API at api.ppq.ai doesn't appear to have publicly accessible billing history endpoints, or they require authentication that we don't have.

Results:

  • Base endpoint and common billing paths all return 404 errors
  • No public billing history is accessible without credentials
  • The API likely requires an API key or authentication headers to access account-specific data

To access billing history, you'd likely need to:

  1. Check if there's a web dashboard at https://ppq.ai/ with a login
  2. Use an API key in the request headers if you have one
  3. Contact their support for billing information

Do you have API credentials or know the correct endpoint path? 19:06 WSB Find the api endpoint for billing.


Context Log - not seen by model
timestamp=2026-03-05 19:05:52
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=11675
approx_tokens=2918

Sections: 17

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"
  • 6. admin_info

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

context_part | role=tool

{"success":true,"url":"https://api.ppq.ai/","method":"GET","status_code":200,"http_ok":true,"truncated":false,"bytes_received":35,"content_type":"application/json; charset=utf-8","body":"{"message":"OOPS! - 404 Not Found"}"}

context_part | role=tool

{"success":true,"url":"https://api.ppq.ai/billing","method":"GET","status_code":200,"http_ok":true,"truncated":false,"bytes_received":35,"content_type":"application/json; charset=utf-8","body":"{"message":"OOPS! - 404 Not Found"}"}

context_part | role=tool

{"success":true,"url":"https://api.ppq.ai/billing/history","method":"GET","status_code":200,"http_ok":true,"truncated":false,"bytes_received":35,"content_type":"application/json; charset=utf-8","body":"{"message":"OOPS! - 404 Not Found"}"}

context_part | role=tool

{"success":true,"url":"https://api.ppq.ai/v1/billing","method":"GET","status_code":200,"http_ok":true,"truncated":false,"bytes_received":35,"content_type":"application/json; charset=utf-8","body":"{"message":"OOPS! - 404 Not Found"}"}

context_part | role=tool

{"success":true,"url":"https://api.ppq.ai/account/billing","method":"GET","status_code":200,"http_ok":true,"truncated":false,"bytes_received":35,"content_type":"application/json; charset=utf-8","body":"{"message":"OOPS! - 404 Not Found"}"}

dm_history | role=chat

19:04 Agent Triggers: No active triggered skills running.

Task added: admin_info (ID: 6, status: pending)

Your task list now has 2 items. What would you like me to do with the admin_info task? 19:05 WSB See if we can see our billing history from https://api.ppq.ai/ --:-- Agent I'll fetch the billing history from that API endpoint for you. --:-- Agent The base endpoint returns a 404. Let me try some common billing/history paths:


Context Log - not seen by model
timestamp=2026-03-05 19:05:42
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=9498
approx_tokens=2374

Sections: 12

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"
  • 6. admin_info

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

context_part | role=tool

{"success":true,"url":"https://api.ppq.ai/","method":"GET","status_code":200,"http_ok":true,"truncated":false,"bytes_received":35,"content_type":"application/json; charset=utf-8","body":"{"message":"OOPS! - 404 Not Found"}"}

dm_history | role=chat

19:04 Agent Triggers: No active triggered skills running.

Task added: admin_info (ID: 6, status: pending)

Your task list now has 2 items. What would you like me to do with the admin_info task? 19:05 WSB See if we can see our billing history from https://api.ppq.ai/ --:-- Agent I'll fetch the billing history from that API endpoint for you.


Context Log - not seen by model
timestamp=2026-03-05 19:05:37
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=8898
approx_tokens=2224

Sections: 10

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"
  • 6. admin_info

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

19:04 Agent Triggers: No active triggered skills running.

Task added: admin_info (ID: 6, status: pending)

Your task list now has 2 items. What would you like me to do with the admin_info task? 19:05 WSB See if we can see our billing history from https://api.ppq.ai/


Context Log - not seen by model
timestamp=2026-03-05 19:04:25
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=10356
approx_tokens=2589

Sections: 15

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

context_part | role=tool

{"success":true,"count":0,"active":0,"triggers":[]}

context_part | role=tool

{"success":true,"action":"add","path":"tasks.json","mutated":true,"count":2,"tasks":[{"id":5,"text":"Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"","status":"pending","created_at":1772625247,"updated_at":1772625247},{"id":6,"text":"admin_info","status":"pending","created_at":1772751865,"updated_at":1772751865}]}

dm_history | role=chat

19:00 Agent I'm running Claude Haiku 4.5 from Anthropic via the PPQ API provider.

Configuration:

Haiku is a smaller, faster model optimized for quick responses and efficient reasoning—well-suited for an agent operating on Nostr. 19:02 Agent - success: true

  • count: 0
  • active: 0
  • triggers:

19:02 WSB /trigger_list 19:04 WSB Add to task list: admin_info --:-- Agent I'll check the active triggers and add that task to your list.


Context Log - not seen by model
timestamp=2026-03-05 19:04:22
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=9158
approx_tokens=2289

Sections: 12

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

19:00 Agent I'm running Claude Haiku 4.5 from Anthropic via the PPQ API provider.

Configuration:

Haiku is a smaller, faster model optimized for quick responses and efficient reasoning—well-suited for an agent operating on Nostr. 19:02 Agent - success: true

  • count: 0
  • active: 0
  • triggers:

19:02 WSB /trigger_list 19:04 WSB Add to task list: admin_info


Context Log - not seen by model
timestamp=2026-03-05 19:02:57
phase=direct_tool_exec
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=167
approx_tokens=41

slash=/trigger_list result_json={"success":true,"count":0,"active":0,"triggers":[]} result_markdown=- success: true

  • count: 0
  • active: 0
  • triggers:

Context Log - not seen by model
timestamp=2026-03-05 19:00:00
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=9800
approx_tokens=2450

Sections: 12

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

context_part | role=tool

{"success":true,"provider":"https://api.ppq.ai","model":"claude-haiku-4.5","base_url":"https://api.ppq.ai","max_tokens":512,"temperature":0.7}

dm_history | role=chat

18:14 Agent The query returned no results. This could mean:

  1. Jack Dorsey hasn't posted recently on the relays I'm connected to
  2. His posts may not be indexed on the relays currently available
  3. He may not have posted in a while

I don't have access to a complete historical archive of all Nostr posts across all relays. The relays I'm connected to may not have his full post history, or there may be connectivity issues.

If you're interested in following Jack Dorsey's Nostr activity, you could:

  • Check his profile directly on a Nostr client like Primal or Damus
  • Search for his npub: npub1sg6plzptd6j07cph0snk2m8wqg3um3dykc4d63yt8pt4xh3lylapzsqsxy3
  • Use a Nostr search engine or explorer

Is there anything else I can help you with? 18:59 WSB What llm model are you running? --:-- Agent


Context Log - not seen by model
timestamp=2026-03-05 18:59:58
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=9395
approx_tokens=2348

Sections: 10

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

18:14 Agent The query returned no results. This could mean:

  1. Jack Dorsey hasn't posted recently on the relays I'm connected to
  2. His posts may not be indexed on the relays currently available
  3. He may not have posted in a while

I don't have access to a complete historical archive of all Nostr posts across all relays. The relays I'm connected to may not have his full post history, or there may be connectivity issues.

If you're interested in following Jack Dorsey's Nostr activity, you could:

  • Check his profile directly on a Nostr client like Primal or Damus
  • Search for his npub: npub1sg6plzptd6j07cph0snk2m8wqg3um3dykc4d63yt8pt4xh3lylapzsqsxy3
  • Use a Nostr search engine or explorer

Is there anything else I can help you with? 18:59 WSB What llm model are you running?


Context Log - not seen by model
timestamp=2026-03-05 18:14:35
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=10655
approx_tokens=2663

Sections: 12

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

context_part | role=tool

{"success":true,"events":[]}

dm_history | role=chat

17:57 Agent The sky appears blue due to a phenomenon called Rayleigh scattering.

Here's how it works:

  1. Sunlight composition: Sunlight contains all wavelengths of visible light—red, orange, yellow, green, blue, and violet.

  2. Scattering by molecules: When sunlight enters Earth's atmosphere, it collides with gas molecules (nitrogen and oxygen) and tiny particles that are much smaller than the wavelength of light.

  3. Wavelength matters: Shorter wavelengths scatter much more easily than longer wavelengths. Blue light has a shorter wavelength than red or yellow light, so it scatters about 10 times more efficiently.

  4. Why not violet?: Violet has an even shorter wavelength than blue, so it scatters even more. However, we see blue instead of violet because:

    • The sun emits less violet light to begin with
    • Our eyes are more sensitive to blue
    • Violet light is partially absorbed by the upper atmosphere
  5. The result: The scattered blue light comes from all directions, making the entire sky appear blue.

Bonus fact: At sunset, the sky turns orange and red because sunlight travels through more atmosphere at a lower angle, scattering away most of the blue light before it reaches your eyes, leaving the longer red and orange wavelengths visible. 18:14 WSB What was the last thing Jack Dorsey posted on nostr? --:-- Agent I'll search for recent posts from Jack Dorsey on Nostr. Let me query for his posts.

First, I need to find Jack Dorsey's pubkey. Jack Dorsey's Nostr pubkey is efc83f01c8fb309df2c8866b8c7924cc8b6f03588edf5e34ae77953e8c7f1577. Let me query his recent posts.


Context Log - not seen by model
timestamp=2026-03-05 18:14:26
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=9975
approx_tokens=2493

Sections: 10

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

17:57 Agent The sky appears blue due to a phenomenon called Rayleigh scattering.

Here's how it works:

  1. Sunlight composition: Sunlight contains all wavelengths of visible light—red, orange, yellow, green, blue, and violet.

  2. Scattering by molecules: When sunlight enters Earth's atmosphere, it collides with gas molecules (nitrogen and oxygen) and tiny particles that are much smaller than the wavelength of light.

  3. Wavelength matters: Shorter wavelengths scatter much more easily than longer wavelengths. Blue light has a shorter wavelength than red or yellow light, so it scatters about 10 times more efficiently.

  4. Why not violet?: Violet has an even shorter wavelength than blue, so it scatters even more. However, we see blue instead of violet because:

    • The sun emits less violet light to begin with
    • Our eyes are more sensitive to blue
    • Violet light is partially absorbed by the upper atmosphere
  5. The result: The scattered blue light comes from all directions, making the entire sky appear blue.

Bonus fact: At sunset, the sky turns orange and red because sunlight travels through more atmosphere at a lower angle, scattering away most of the blue light before it reaches your eyes, leaving the longer red and orange wavelengths visible. 18:14 WSB What was the last thing Jack Dorsey posted on nostr?


Context Log - not seen by model
timestamp=2026-03-05 11:58:13
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=9881
approx_tokens=2470

Sections: 19

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

11:44 Agent Good morning, WSB! What can I help you with today? 11:44 WSB what is the capital of Russia? 11:49 WSB What is the capital of Japan 11:49 Agent The capital of Japan is Tokyo.

Tokyo is the country's largest city and has been the capital since 1868. It's located on the eastern coast of Honshu, Japan's largest island, and is the center of Japan's government, economy, and culture. 11:50 WSB What is the capital of England? 11:50 Agent The capital of England is London.

London is the largest city in England and the United Kingdom, located on the River Thames in the southeast of England. It has been the capital since the Norman Conquest in 1066 and is the center of the UK's government, economy, and culture. 11:50 WSB /help 11:51 WSB What is the capital of Mexico? 11:51 WSB Hello, are you there? 11:57 Agent Didactyl has started up and is online at 2026-03-05 11:57:40 (version v0.0.37, connected relays: 5/5). 11:58 WSB good morning


Context Log - not seen by model
timestamp=2026-03-05 11:50:10
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=8893
approx_tokens=2223

Sections: 10

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

11:49 Agent The capital of Japan is Tokyo.

Tokyo is the country's largest city and has been the capital since 1868. It's located on the eastern coast of Honshu, Japan's largest island, and is the center of Japan's government, economy, and culture. 11:50 WSB What is the capital of England?


Context Log - not seen by model
timestamp=2026-03-05 11:49:31
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=8596
approx_tokens=2149

Sections: 9

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

11:49 WSB What is the capital of Japan


Context Log - not seen by model
timestamp=2026-03-05 11:44:55
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=8699
approx_tokens=2174

Sections: 10

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

11:44 Agent Good morning, WSB! What can I help you with today? 11:44 WSB what is the capital of Russia?


Context Log - not seen by model
timestamp=2026-03-05 11:44:32
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=10419
approx_tokens=2604

Sections: 21

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

11:18 Agent The capital of Germany is Berlin.

Berlin is located in northeastern Germany and has been the capital since the reunification of Germany in 1990. It's the country's largest city and serves as its political, cultural, and economic center. The city is famous for historical landmarks like the Brandenburg Gate, the Berlin Wall remnants, the Reichstag building, and many museums.

Is there something specific about Germany or Berlin you'd like to know more about? 11:19 WSB How about Japan? 11:20 WSB Hello 11:34 Agent Didactyl has started up and is online at 2026-03-05 11:34:52 (version v0.0.37, connected relays: 5/5). 11:35 WSB good morning 11:35 Agent Good morning, WSB! What can I help you with today? 11:35 WSB what is the capital of france? 11:36 WSB how about germany? 11:36 Agent I need more context to help you with Germany. Could you clarify what you'd like to know? For example:

  • Information about Germany (geography, history, culture)?
  • Travel or tourism information?
  • Current news or events?
  • Something related to your Nostr activities or agent operations?
  • A specific question or task?

Let me know what you're interested in, WSB, and I'll do my best to help. 11:36 WSB Waht is the capital of germany? 11:37 WSB What is the capital of Spain? 11:44 Agent Didactyl has started up and is online at 2026-03-05 11:44:09 (version v0.0.37, connected relays: 5/5). 11:44 WSB good morning


Context Log - not seen by model
timestamp=2026-03-05 11:36:36
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=8586
approx_tokens=2146

Sections: 9

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

11:36 WSB how about germany?


Context Log - not seen by model
timestamp=2026-03-05 11:35:32
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=8699
approx_tokens=2174

Sections: 10

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

11:35 Agent Good morning, WSB! What can I help you with today? 11:35 WSB what is the capital of france?


Context Log - not seen by model
timestamp=2026-03-05 11:35:11
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=10356
approx_tokens=2589

Sections: 21

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

11:03 Agent Good morning, WSB! What can I help you with? 11:03 WSB What is the capital of France? 11:17 Agent Didactyl has started up and is online at 2026-03-05 11:17:21 (version v0.0.37, connected relays: 5/5). 11:17 WSB Good morning. 11:17 Agent Good morning, WSB! How can I assist you today? 11:18 WSB What is the capital of France? 11:18 Agent The capital of France is Paris.

Paris is located in the north-central part of France along the Seine River. It's the country's largest city and serves as its political, cultural, and economic center. The city is famous for landmarks like the Eiffel Tower, Notre-Dame Cathedral, the Louvre Museum, and many others. 11:18 WSB How about Germany? 11:18 Agent The capital of Germany is Berlin.

Berlin is located in northeastern Germany and has been the capital since the reunification of Germany in 1990. It's the country's largest city and serves as its political, cultural, and economic center. The city is famous for historical landmarks like the Brandenburg Gate, the Berlin Wall remnants, the Reichstag building, and many museums.

Is there something specific about Germany or Berlin you'd like to know more about? 11:19 WSB How about Japan? 11:20 WSB Hello 11:34 Agent Didactyl has started up and is online at 2026-03-05 11:34:52 (version v0.0.37, connected relays: 5/5). 11:35 WSB good morning


Context Log - not seen by model
timestamp=2026-03-05 11:18:53
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=8217
approx_tokens=2054

Sections: 10

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

11:18 Agent The capital of France is Paris.

Paris is located in the north-central part of France along the Seine River. It's the country's largest city and serves as its political, cultural, and economic center. The city is famous for landmarks like the Eiffel Tower, Notre-Dame Cathedral, the Louvre Museum, and many others. 11:18 WSB How about Germany?


Context Log - not seen by model
timestamp=2026-03-05 11:18:08
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=8695
approx_tokens=2173

Sections: 10

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

11:17 Agent Good morning, WSB! How can I assist you today? 11:18 WSB What is the capital of France?


Context Log - not seen by model
timestamp=2026-03-05 11:17:41
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=12936
approx_tokens=3234

Sections: 21

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

10:08 Agent AVAILABLE TOOLS

  • file_read — Read a local file as text from the configured working directory
  • file_write — Write text content to a local file in the configured working directory
  • http_fetch — Fetch HTTP(S) resources with optional method, headers, timeout, and body
  • model_get — Get current active LLM runtime configuration (excluding API key)
  • model_list — List available model IDs using provider OpenAI-compatible /models endpoint
  • model_set — Update active LLM configuration and persist it to config.json
  • my_npub — Alias for nostr_npub: return this agent's pubkey encoded as npub bech32
  • my_pubkey — Alias for nostr_pubkey: return this agent's pubkey in hex format
  • my_version — Return current Didactyl version and metadata from build macros
  • nostr_decode — Decode a Nostr bech32/nostr: URI into components
  • nostr_decrypt — Decrypt NIP-44 ciphertext from a sender
  • nostr_delete — Request deletion of one or more previously published events (NIP-09 kind 5)
  • nostr_dm_send — Send a NIP-04 encrypted DM
  • nostr_dm_send_nip17 — Send a private DM using NIP-17 gift wrap protocol
  • nostr_encode — Encode a Nostr entity into nostr: URI (npub, note, nprofile, nevent, naddr)
  • nostr_encrypt — Encrypt plaintext using NIP-44 for a recipient
  • nostr_file_md_to_longform_post — Read a markdown file and publish it as kind 30023 longform post; defaults d-tag to lowercase filename
  • nostr_list_manage — Add/remove tag tuples in replaceable list events (NIP-51 style)
  • nostr_nip05_lookup — Look up or verify a NIP-05 identifier (user@domain)
  • nostr_npub — Return this agent's pubkey encoded as npub bech32
  • nostr_post — Publish a Nostr event to connected relays
  • nostr_post_readme — Publish README.md as kind 30023 with deterministic d tag readme.md
  • nostr_profile_get — Look up a Nostr profile (kind 0 metadata) by pubkey
  • nostr_pubkey — Return this agent's pubkey in hex format
  • nostr_query — Query events from relays using a Nostr filter
  • nostr_react — React to a Nostr event with like/dislike/emoji (NIP-25 kind 7)
  • nostr_relay_info — Fetch NIP-11 relay information document
  • nostr_relay_status — Get connection status and statistics for all relays
  • shell_exec — Execute a shell command and return stdout/stderr
  • skill_adopt — Adopt a skill by adding its address to kind 10123 adoption list
  • skill_create — Create or update a skill definition as kind 31123/31124 and optionally auto-adopt it
  • skill_list — List this agent's published skills, optionally filtered by scope
  • skill_remove — Remove a skill address from kind 10123 adoption list
  • skill_search — Search public skills by query/author and optionally rank by adoption popularity
  • task_manage — Manage agent short-term task memory stored in tasks.json (list/add/update/remove/clear/replace)
  • tool_list — List available tools with name, description, and JSON parameter schema
  • trigger_list — List active triggered skills and their runtime status

AVAILABLE SKILLS

  • long_form_note
  • post_readme_to_nostr
  • long_form_note
  • admin_ops
  • post_readme_to_nostr

10:27 Agent Didactyl has started up and is online at 2026-03-05 10:27:15 (version v0.0.36, connected relays: 5/5). 10:50 Agent Didactyl has started up and is online at 2026-03-05 10:50:29 (version v0.0.36, connected relays: 5/5). 10:50 WSB Good morning 10:50 Agent Good morning, WSB! How can I help you today? 10:51 WSB What is the capital of France? 10:51 WSB What is the capital of GermanY? 11:02 Agent Didactyl has started up and is online at 2026-03-05 11:02:58 (version v0.0.36, connected relays: 5/5). 11:03 WSB Good morning. 11:03 Agent Good morning, WSB! What can I help you with? 11:03 WSB What is the capital of France? 11:17 Agent Didactyl has started up and is online at 2026-03-05 11:17:21 (version v0.0.37, connected relays: 5/5). 11:17 WSB Good morning.


Context Log - not seen by model
timestamp=2026-03-05 11:03:26
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=12174
approx_tokens=3043

Sections: 21

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

10:07 Agent Didactyl has started up and is online at 2026-03-05 10:07:33 (version v0.0.36, connected relays: 5/5). 10:07 WSB Good morning. 10:07 Agent Good morning, WSB! What can I do for you today? 10:08 WSB /help 10:08 Agent AVAILABLE TOOLS

  • file_read — Read a local file as text from the configured working directory
  • file_write — Write text content to a local file in the configured working directory
  • http_fetch — Fetch HTTP(S) resources with optional method, headers, timeout, and body
  • model_get — Get current active LLM runtime configuration (excluding API key)
  • model_list — List available model IDs using provider OpenAI-compatible /models endpoint
  • model_set — Update active LLM configuration and persist it to config.json
  • my_npub — Alias for nostr_npub: return this agent's pubkey encoded as npub bech32
  • my_pubkey — Alias for nostr_pubkey: return this agent's pubkey in hex format
  • my_version — Return current Didactyl version and metadata from build macros
  • nostr_decode — Decode a Nostr bech32/nostr: URI into components
  • nostr_decrypt — Decrypt NIP-44 ciphertext from a sender
  • nostr_delete — Request deletion of one or more previously published events (NIP-09 kind 5)
  • nostr_dm_send — Send a NIP-04 encrypted DM
  • nostr_dm_send_nip17 — Send a private DM using NIP-17 gift wrap protocol
  • nostr_encode — Encode a Nostr entity into nostr: URI (npub, note, nprofile, nevent, naddr)
  • nostr_encrypt — Encrypt plaintext using NIP-44 for a recipient
  • nostr_file_md_to_longform_post — Read a markdown file and publish it as kind 30023 longform post; defaults d-tag to lowercase filename
  • nostr_list_manage — Add/remove tag tuples in replaceable list events (NIP-51 style)
  • nostr_nip05_lookup — Look up or verify a NIP-05 identifier (user@domain)
  • nostr_npub — Return this agent's pubkey encoded as npub bech32
  • nostr_post — Publish a Nostr event to connected relays
  • nostr_post_readme — Publish README.md as kind 30023 with deterministic d tag readme.md
  • nostr_profile_get — Look up a Nostr profile (kind 0 metadata) by pubkey
  • nostr_pubkey — Return this agent's pubkey in hex format
  • nostr_query — Query events from relays using a Nostr filter
  • nostr_react — React to a Nostr event with like/dislike/emoji (NIP-25 kind 7)
  • nostr_relay_info — Fetch NIP-11 relay information document
  • nostr_relay_status — Get connection status and statistics for all relays
  • shell_exec — Execute a shell command and return stdout/stderr
  • skill_adopt — Adopt a skill by adding its address to kind 10123 adoption list
  • skill_create — Create or update a skill definition as kind 31123/31124 and optionally auto-adopt it
  • skill_list — List this agent's published skills, optionally filtered by scope
  • skill_remove — Remove a skill address from kind 10123 adoption list
  • skill_search — Search public skills by query/author and optionally rank by adoption popularity
  • task_manage — Manage agent short-term task memory stored in tasks.json (list/add/update/remove/clear/replace)
  • tool_list — List available tools with name, description, and JSON parameter schema
  • trigger_list — List active triggered skills and their runtime status

AVAILABLE SKILLS

  • long_form_note
  • post_readme_to_nostr
  • long_form_note
  • admin_ops
  • post_readme_to_nostr

10:27 Agent Didactyl has started up and is online at 2026-03-05 10:27:15 (version v0.0.36, connected relays: 5/5). 10:50 Agent Didactyl has started up and is online at 2026-03-05 10:50:29 (version v0.0.36, connected relays: 5/5). 10:50 WSB Good morning 10:50 Agent Good morning, WSB! How can I help you today? 10:51 WSB What is the capital of France? 10:51 WSB What is the capital of GermanY? 11:02 Agent Didactyl has started up and is online at 2026-03-05 11:02:58 (version v0.0.36, connected relays: 5/5). 11:03 WSB Good morning.


Context Log - not seen by model
timestamp=2026-03-05 10:50:47
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=12368
approx_tokens=3092

Sections: 20

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

11:42 WSB delete tweet 2. We finished that. 11:42 Agent Done. Tweet 2 is removed. You now have 1 remaining task:

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents" 06:23 Agent Didactyl has started up and is online (version v0.0.30, connected relays: 4/4). 07:39 WSB /help 10:07 Agent Didactyl has started up and is online at 2026-03-05 10:07:33 (version v0.0.36, connected relays: 5/5). 10:07 WSB Good morning. 10:07 Agent Good morning, WSB! What can I do for you today? 10:08 WSB /help 10:08 Agent AVAILABLE TOOLS
  • file_read — Read a local file as text from the configured working directory
  • file_write — Write text content to a local file in the configured working directory
  • http_fetch — Fetch HTTP(S) resources with optional method, headers, timeout, and body
  • model_get — Get current active LLM runtime configuration (excluding API key)
  • model_list — List available model IDs using provider OpenAI-compatible /models endpoint
  • model_set — Update active LLM configuration and persist it to config.json
  • my_npub — Alias for nostr_npub: return this agent's pubkey encoded as npub bech32
  • my_pubkey — Alias for nostr_pubkey: return this agent's pubkey in hex format
  • my_version — Return current Didactyl version and metadata from build macros
  • nostr_decode — Decode a Nostr bech32/nostr: URI into components
  • nostr_decrypt — Decrypt NIP-44 ciphertext from a sender
  • nostr_delete — Request deletion of one or more previously published events (NIP-09 kind 5)
  • nostr_dm_send — Send a NIP-04 encrypted DM
  • nostr_dm_send_nip17 — Send a private DM using NIP-17 gift wrap protocol
  • nostr_encode — Encode a Nostr entity into nostr: URI (npub, note, nprofile, nevent, naddr)
  • nostr_encrypt — Encrypt plaintext using NIP-44 for a recipient
  • nostr_file_md_to_longform_post — Read a markdown file and publish it as kind 30023 longform post; defaults d-tag to lowercase filename
  • nostr_list_manage — Add/remove tag tuples in replaceable list events (NIP-51 style)
  • nostr_nip05_lookup — Look up or verify a NIP-05 identifier (user@domain)
  • nostr_npub — Return this agent's pubkey encoded as npub bech32
  • nostr_post — Publish a Nostr event to connected relays
  • nostr_post_readme — Publish README.md as kind 30023 with deterministic d tag readme.md
  • nostr_profile_get — Look up a Nostr profile (kind 0 metadata) by pubkey
  • nostr_pubkey — Return this agent's pubkey in hex format
  • nostr_query — Query events from relays using a Nostr filter
  • nostr_react — React to a Nostr event with like/dislike/emoji (NIP-25 kind 7)
  • nostr_relay_info — Fetch NIP-11 relay information document
  • nostr_relay_status — Get connection status and statistics for all relays
  • shell_exec — Execute a shell command and return stdout/stderr
  • skill_adopt — Adopt a skill by adding its address to kind 10123 adoption list
  • skill_create — Create or update a skill definition as kind 31123/31124 and optionally auto-adopt it
  • skill_list — List this agent's published skills, optionally filtered by scope
  • skill_remove — Remove a skill address from kind 10123 adoption list
  • skill_search — Search public skills by query/author and optionally rank by adoption popularity
  • task_manage — Manage agent short-term task memory stored in tasks.json (list/add/update/remove/clear/replace)
  • tool_list — List available tools with name, description, and JSON parameter schema
  • trigger_list — List active triggered skills and their runtime status

AVAILABLE SKILLS

  • long_form_note
  • post_readme_to_nostr
  • long_form_note
  • admin_ops
  • post_readme_to_nostr

10:27 Agent Didactyl has started up and is online at 2026-03-05 10:27:15 (version v0.0.36, connected relays: 5/5). 10:50 Agent Didactyl has started up and is online at 2026-03-05 10:50:29 (version v0.0.36, connected relays: 5/5). 10:50 WSB Good morning


Context Log - not seen by model
timestamp=2026-03-05 10:44:50
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=8659
approx_tokens=2164

Sections: 10

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

11:31 WSB Good afternoon. 10:44 WSB What is the capital of france?


Context Log - not seen by model
timestamp=2026-03-05 10:44:25
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=12948
approx_tokens=3237

Sections: 19

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

11:32 WSB delete tweet 2. We finished that. 11:42 Agent Done. Tweet 2 is removed. You now have 1 remaining task:

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents" 06:23 Agent Didactyl has started up and is online (version v0.0.30, connected relays: 4/4). 07:39 WSB /help 10:07 Agent Didactyl has started up and is online at 2026-03-05 10:07:33 (version v0.0.36, connected relays: 5/5). 10:07 WSB Good morning. 10:07 Agent Good morning, WSB! What can I do for you today? 10:08 WSB /help 10:08 Agent AVAILABLE TOOLS
  • file_read — Read a local file as text from the configured working directory
  • file_write — Write text content to a local file in the configured working directory
  • http_fetch — Fetch HTTP(S) resources with optional method, headers, timeout, and body
  • model_get — Get current active LLM runtime configuration (excluding API key)
  • model_list — List available model IDs using provider OpenAI-compatible /models endpoint
  • model_set — Update active LLM configuration and persist it to config.json
  • my_npub — Alias for nostr_npub: return this agent's pubkey encoded as npub bech32
  • my_pubkey — Alias for nostr_pubkey: return this agent's pubkey in hex format
  • my_version — Return current Didactyl version and metadata from build macros
  • nostr_decode — Decode a Nostr bech32/nostr: URI into components
  • nostr_decrypt — Decrypt NIP-44 ciphertext from a sender
  • nostr_delete — Request deletion of one or more previously published events (NIP-09 kind 5)
  • nostr_dm_send — Send a NIP-04 encrypted DM
  • nostr_dm_send_nip17 — Send a private DM using NIP-17 gift wrap protocol
  • nostr_encode — Encode a Nostr entity into nostr: URI (npub, note, nprofile, nevent, naddr)
  • nostr_encrypt — Encrypt plaintext using NIP-44 for a recipient
  • nostr_file_md_to_longform_post — Read a markdown file and publish it as kind 30023 longform post; defaults d-tag to lowercase filename
  • nostr_list_manage — Add/remove tag tuples in replaceable list events (NIP-51 style)
  • nostr_nip05_lookup — Look up or verify a NIP-05 identifier (user@domain)
  • nostr_npub — Return this agent's pubkey encoded as npub bech32
  • nostr_post — Publish a Nostr event to connected relays
  • nostr_post_readme — Publish README.md as kind 30023 with deterministic d tag readme.md
  • nostr_profile_get — Look up a Nostr profile (kind 0 metadata) by pubkey
  • nostr_pubkey — Return this agent's pubkey in hex format
  • nostr_query — Query events from relays using a Nostr filter
  • nostr_react — React to a Nostr event with like/dislike/emoji (NIP-25 kind 7)
  • nostr_relay_info — Fetch NIP-11 relay information document
  • nostr_relay_status — Get connection status and statistics for all relays
  • shell_exec — Execute a shell command and return stdout/stderr
  • skill_adopt — Adopt a skill by adding its address to kind 10123 adoption list
  • skill_create — Create or update a skill definition as kind 31123/31124 and optionally auto-adopt it
  • skill_list — List this agent's published skills, optionally filtered by scope
  • skill_remove — Remove a skill address from kind 10123 adoption list
  • skill_search — Search public skills by query/author and optionally rank by adoption popularity
  • task_manage — Manage agent short-term task memory stored in tasks.json (list/add/update/remove/clear/replace)
  • tool_list — List available tools with name, description, and JSON parameter schema
  • trigger_list — List active triggered skills and their runtime status

AVAILABLE SKILLS

  • long_form_note
  • post_readme_to_nostr
  • long_form_note
  • admin_ops
  • post_readme_to_nostr

10:27 Agent Didactyl has started up and is online at 2026-03-05 10:27:15 (version v0.0.36, connected relays: 5/5). 10:44 WSB hello


Context Log - not seen by model
timestamp=2026-03-05 10:41:44
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=12956
approx_tokens=3239

Sections: 19

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

11:32 WSB delete tweet 2. We finished that. 11:42 Agent Done. Tweet 2 is removed. You now have 1 remaining task:

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents" 06:23 Agent Didactyl has started up and is online (version v0.0.30, connected relays: 4/4). 07:39 WSB /help 10:07 Agent Didactyl has started up and is online at 2026-03-05 10:07:33 (version v0.0.36, connected relays: 5/5). 10:07 WSB Good morning. 10:07 Agent Good morning, WSB! What can I do for you today? 10:08 WSB /help 10:08 Agent AVAILABLE TOOLS
  • file_read — Read a local file as text from the configured working directory
  • file_write — Write text content to a local file in the configured working directory
  • http_fetch — Fetch HTTP(S) resources with optional method, headers, timeout, and body
  • model_get — Get current active LLM runtime configuration (excluding API key)
  • model_list — List available model IDs using provider OpenAI-compatible /models endpoint
  • model_set — Update active LLM configuration and persist it to config.json
  • my_npub — Alias for nostr_npub: return this agent's pubkey encoded as npub bech32
  • my_pubkey — Alias for nostr_pubkey: return this agent's pubkey in hex format
  • my_version — Return current Didactyl version and metadata from build macros
  • nostr_decode — Decode a Nostr bech32/nostr: URI into components
  • nostr_decrypt — Decrypt NIP-44 ciphertext from a sender
  • nostr_delete — Request deletion of one or more previously published events (NIP-09 kind 5)
  • nostr_dm_send — Send a NIP-04 encrypted DM
  • nostr_dm_send_nip17 — Send a private DM using NIP-17 gift wrap protocol
  • nostr_encode — Encode a Nostr entity into nostr: URI (npub, note, nprofile, nevent, naddr)
  • nostr_encrypt — Encrypt plaintext using NIP-44 for a recipient
  • nostr_file_md_to_longform_post — Read a markdown file and publish it as kind 30023 longform post; defaults d-tag to lowercase filename
  • nostr_list_manage — Add/remove tag tuples in replaceable list events (NIP-51 style)
  • nostr_nip05_lookup — Look up or verify a NIP-05 identifier (user@domain)
  • nostr_npub — Return this agent's pubkey encoded as npub bech32
  • nostr_post — Publish a Nostr event to connected relays
  • nostr_post_readme — Publish README.md as kind 30023 with deterministic d tag readme.md
  • nostr_profile_get — Look up a Nostr profile (kind 0 metadata) by pubkey
  • nostr_pubkey — Return this agent's pubkey in hex format
  • nostr_query — Query events from relays using a Nostr filter
  • nostr_react — React to a Nostr event with like/dislike/emoji (NIP-25 kind 7)
  • nostr_relay_info — Fetch NIP-11 relay information document
  • nostr_relay_status — Get connection status and statistics for all relays
  • shell_exec — Execute a shell command and return stdout/stderr
  • skill_adopt — Adopt a skill by adding its address to kind 10123 adoption list
  • skill_create — Create or update a skill definition as kind 31123/31124 and optionally auto-adopt it
  • skill_list — List this agent's published skills, optionally filtered by scope
  • skill_remove — Remove a skill address from kind 10123 adoption list
  • skill_search — Search public skills by query/author and optionally rank by adoption popularity
  • task_manage — Manage agent short-term task memory stored in tasks.json (list/add/update/remove/clear/replace)
  • tool_list — List available tools with name, description, and JSON parameter schema
  • trigger_list — List active triggered skills and their runtime status

AVAILABLE SKILLS

  • long_form_note
  • post_readme_to_nostr
  • long_form_note
  • admin_ops
  • post_readme_to_nostr

10:27 Agent Didactyl has started up and is online at 2026-03-05 10:27:15 (version v0.0.36, connected relays: 5/5). 10:41 WSB Good morning.


Context Log - not seen by model
timestamp=2026-03-05 10:30:11
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=12956
approx_tokens=3239

Sections: 19

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

11:32 WSB delete tweet 2. We finished that. 11:42 Agent Done. Tweet 2 is removed. You now have 1 remaining task:

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents" 06:23 Agent Didactyl has started up and is online (version v0.0.30, connected relays: 4/4). 07:39 WSB /help 10:07 Agent Didactyl has started up and is online at 2026-03-05 10:07:33 (version v0.0.36, connected relays: 5/5). 10:07 WSB Good morning. 10:07 Agent Good morning, WSB! What can I do for you today? 10:08 WSB /help 10:08 Agent AVAILABLE TOOLS
  • file_read — Read a local file as text from the configured working directory
  • file_write — Write text content to a local file in the configured working directory
  • http_fetch — Fetch HTTP(S) resources with optional method, headers, timeout, and body
  • model_get — Get current active LLM runtime configuration (excluding API key)
  • model_list — List available model IDs using provider OpenAI-compatible /models endpoint
  • model_set — Update active LLM configuration and persist it to config.json
  • my_npub — Alias for nostr_npub: return this agent's pubkey encoded as npub bech32
  • my_pubkey — Alias for nostr_pubkey: return this agent's pubkey in hex format
  • my_version — Return current Didactyl version and metadata from build macros
  • nostr_decode — Decode a Nostr bech32/nostr: URI into components
  • nostr_decrypt — Decrypt NIP-44 ciphertext from a sender
  • nostr_delete — Request deletion of one or more previously published events (NIP-09 kind 5)
  • nostr_dm_send — Send a NIP-04 encrypted DM
  • nostr_dm_send_nip17 — Send a private DM using NIP-17 gift wrap protocol
  • nostr_encode — Encode a Nostr entity into nostr: URI (npub, note, nprofile, nevent, naddr)
  • nostr_encrypt — Encrypt plaintext using NIP-44 for a recipient
  • nostr_file_md_to_longform_post — Read a markdown file and publish it as kind 30023 longform post; defaults d-tag to lowercase filename
  • nostr_list_manage — Add/remove tag tuples in replaceable list events (NIP-51 style)
  • nostr_nip05_lookup — Look up or verify a NIP-05 identifier (user@domain)
  • nostr_npub — Return this agent's pubkey encoded as npub bech32
  • nostr_post — Publish a Nostr event to connected relays
  • nostr_post_readme — Publish README.md as kind 30023 with deterministic d tag readme.md
  • nostr_profile_get — Look up a Nostr profile (kind 0 metadata) by pubkey
  • nostr_pubkey — Return this agent's pubkey in hex format
  • nostr_query — Query events from relays using a Nostr filter
  • nostr_react — React to a Nostr event with like/dislike/emoji (NIP-25 kind 7)
  • nostr_relay_info — Fetch NIP-11 relay information document
  • nostr_relay_status — Get connection status and statistics for all relays
  • shell_exec — Execute a shell command and return stdout/stderr
  • skill_adopt — Adopt a skill by adding its address to kind 10123 adoption list
  • skill_create — Create or update a skill definition as kind 31123/31124 and optionally auto-adopt it
  • skill_list — List this agent's published skills, optionally filtered by scope
  • skill_remove — Remove a skill address from kind 10123 adoption list
  • skill_search — Search public skills by query/author and optionally rank by adoption popularity
  • task_manage — Manage agent short-term task memory stored in tasks.json (list/add/update/remove/clear/replace)
  • tool_list — List available tools with name, description, and JSON parameter schema
  • trigger_list — List active triggered skills and their runtime status

AVAILABLE SKILLS

  • long_form_note
  • post_readme_to_nostr
  • long_form_note
  • admin_ops
  • post_readme_to_nostr

10:27 Agent Didactyl has started up and is online at 2026-03-05 10:27:15 (version v0.0.36, connected relays: 5/5). 10:30 WSB Good morning.


Context Log - not seen by model
timestamp=2026-03-05 10:08:19
phase=direct_tool_exec
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=6263
approx_tokens=1565

slash=/help result_json=AVAILABLE TOOLS

  • file_read — Read a local file as text from the configured working directory
  • file_write — Write text content to a local file in the configured working directory
  • http_fetch — Fetch HTTP(S) resources with optional method, headers, timeout, and body
  • model_get — Get current active LLM runtime configuration (excluding API key)
  • model_list — List available model IDs using provider OpenAI-compatible /models endpoint
  • model_set — Update active LLM configuration and persist it to config.json
  • my_npub — Alias for nostr_npub: return this agent's pubkey encoded as npub bech32
  • my_pubkey — Alias for nostr_pubkey: return this agent's pubkey in hex format
  • my_version — Return current Didactyl version and metadata from build macros
  • nostr_decode — Decode a Nostr bech32/nostr: URI into components
  • nostr_decrypt — Decrypt NIP-44 ciphertext from a sender
  • nostr_delete — Request deletion of one or more previously published events (NIP-09 kind 5)
  • nostr_dm_send — Send a NIP-04 encrypted DM
  • nostr_dm_send_nip17 — Send a private DM using NIP-17 gift wrap protocol
  • nostr_encode — Encode a Nostr entity into nostr: URI (npub, note, nprofile, nevent, naddr)
  • nostr_encrypt — Encrypt plaintext using NIP-44 for a recipient
  • nostr_file_md_to_longform_post — Read a markdown file and publish it as kind 30023 longform post; defaults d-tag to lowercase filename
  • nostr_list_manage — Add/remove tag tuples in replaceable list events (NIP-51 style)
  • nostr_nip05_lookup — Look up or verify a NIP-05 identifier (user@domain)
  • nostr_npub — Return this agent's pubkey encoded as npub bech32
  • nostr_post — Publish a Nostr event to connected relays
  • nostr_post_readme — Publish README.md as kind 30023 with deterministic d tag readme.md
  • nostr_profile_get — Look up a Nostr profile (kind 0 metadata) by pubkey
  • nostr_pubkey — Return this agent's pubkey in hex format
  • nostr_query — Query events from relays using a Nostr filter
  • nostr_react — React to a Nostr event with like/dislike/emoji (NIP-25 kind 7)
  • nostr_relay_info — Fetch NIP-11 relay information document
  • nostr_relay_status — Get connection status and statistics for all relays
  • shell_exec — Execute a shell command and return stdout/stderr
  • skill_adopt — Adopt a skill by adding its address to kind 10123 adoption list
  • skill_create — Create or update a skill definition as kind 31123/31124 and optionally auto-adopt it
  • skill_list — List this agent's published skills, optionally filtered by scope
  • skill_remove — Remove a skill address from kind 10123 adoption list
  • skill_search — Search public skills by query/author and optionally rank by adoption popularity
  • task_manage — Manage agent short-term task memory stored in tasks.json (list/add/update/remove/clear/replace)
  • tool_list — List available tools with name, description, and JSON parameter schema
  • trigger_list — List active triggered skills and their runtime status

AVAILABLE SKILLS

  • long_form_note
  • post_readme_to_nostr
  • long_form_note
  • admin_ops
  • post_readme_to_nostr

result_markdown=AVAILABLE TOOLS

  • file_read — Read a local file as text from the configured working directory
  • file_write — Write text content to a local file in the configured working directory
  • http_fetch — Fetch HTTP(S) resources with optional method, headers, timeout, and body
  • model_get — Get current active LLM runtime configuration (excluding API key)
  • model_list — List available model IDs using provider OpenAI-compatible /models endpoint
  • model_set — Update active LLM configuration and persist it to config.json
  • my_npub — Alias for nostr_npub: return this agent's pubkey encoded as npub bech32
  • my_pubkey — Alias for nostr_pubkey: return this agent's pubkey in hex format
  • my_version — Return current Didactyl version and metadata from build macros
  • nostr_decode — Decode a Nostr bech32/nostr: URI into components
  • nostr_decrypt — Decrypt NIP-44 ciphertext from a sender
  • nostr_delete — Request deletion of one or more previously published events (NIP-09 kind 5)
  • nostr_dm_send — Send a NIP-04 encrypted DM
  • nostr_dm_send_nip17 — Send a private DM using NIP-17 gift wrap protocol
  • nostr_encode — Encode a Nostr entity into nostr: URI (npub, note, nprofile, nevent, naddr)
  • nostr_encrypt — Encrypt plaintext using NIP-44 for a recipient
  • nostr_file_md_to_longform_post — Read a markdown file and publish it as kind 30023 longform post; defaults d-tag to lowercase filename
  • nostr_list_manage — Add/remove tag tuples in replaceable list events (NIP-51 style)
  • nostr_nip05_lookup — Look up or verify a NIP-05 identifier (user@domain)
  • nostr_npub — Return this agent's pubkey encoded as npub bech32
  • nostr_post — Publish a Nostr event to connected relays
  • nostr_post_readme — Publish README.md as kind 30023 with deterministic d tag readme.md
  • nostr_profile_get — Look up a Nostr profile (kind 0 metadata) by pubkey
  • nostr_pubkey — Return this agent's pubkey in hex format
  • nostr_query — Query events from relays using a Nostr filter
  • nostr_react — React to a Nostr event with like/dislike/emoji (NIP-25 kind 7)
  • nostr_relay_info — Fetch NIP-11 relay information document
  • nostr_relay_status — Get connection status and statistics for all relays
  • shell_exec — Execute a shell command and return stdout/stderr
  • skill_adopt — Adopt a skill by adding its address to kind 10123 adoption list
  • skill_create — Create or update a skill definition as kind 31123/31124 and optionally auto-adopt it
  • skill_list — List this agent's published skills, optionally filtered by scope
  • skill_remove — Remove a skill address from kind 10123 adoption list
  • skill_search — Search public skills by query/author and optionally rank by adoption popularity
  • task_manage — Manage agent short-term task memory stored in tasks.json (list/add/update/remove/clear/replace)
  • tool_list — List available tools with name, description, and JSON parameter schema
  • trigger_list — List active triggered skills and their runtime status

AVAILABLE SKILLS

  • long_form_note
  • post_readme_to_nostr
  • long_form_note
  • admin_ops
  • post_readme_to_nostr

Context Log - not seen by model
timestamp=2026-03-05 10:07:55
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=10554
approx_tokens=2638

Sections: 19

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

11:31 Agent Didactyl has started up and is online (version v0.0.29, connected relays: 4/4). 11:31 WSB Good afternoon. 11:31 Agent Good afternoon, WSB! How's it going? What can I help you with today? 11:32 WSB What is left on your tasks? 11:32 Agent Looking at my active task list, I have 2 items remaining:

  • 4. Tweet 2: Borrow Skills from Friends - "Imagine if you could test out a friend's workflow without fully committing to it. Didactyl lets you try skills others have built, safely and temporarily. No installation. No lock-in. Just try it, see if it works for you. That's how tools should work. #nostr"

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

Both are promotional posts about Didactyl skills. Want me to post these? 11:32 WSB delete tweet 2. We finished that. 11:42 Agent Done. Tweet 2 is removed. You now have 1 remaining task:

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents" 06:23 Agent Didactyl has started up and is online (version v0.0.30, connected relays: 4/4). 07:39 WSB /help 10:07 Agent Didactyl has started up and is online at 2026-03-05 10:07:33 (version v0.0.36, connected relays: 5/5). 10:07 WSB Good morning.

Context Log - not seen by model
timestamp=2026-03-05 10:03:32
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=10459
approx_tokens=2614

Sections: 19

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

09:47 WSB /model_list 11:31 Agent Didactyl has started up and is online (version v0.0.29, connected relays: 4/4). 11:31 WSB Good afternoon. 11:31 Agent Good afternoon, WSB! How's it going? What can I help you with today? 11:32 WSB What is left on your tasks? 11:32 Agent Looking at my active task list, I have 2 items remaining:

  • 4. Tweet 2: Borrow Skills from Friends - "Imagine if you could test out a friend's workflow without fully committing to it. Didactyl lets you try skills others have built, safely and temporarily. No installation. No lock-in. Just try it, see if it works for you. That's how tools should work. #nostr"

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

Both are promotional posts about Didactyl skills. Want me to post these? 11:32 WSB delete tweet 2. We finished that. 11:42 Agent Done. Tweet 2 is removed. You now have 1 remaining task:

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents" 06:23 Agent Didactyl has started up and is online (version v0.0.30, connected relays: 4/4). 07:39 WSB /help 10:03 WSB Good afternoon

Context Log - not seen by model
timestamp=2026-03-05 09:54:29
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=10457
approx_tokens=2614

Sections: 19

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

09:47 WSB /model_list 11:31 Agent Didactyl has started up and is online (version v0.0.29, connected relays: 4/4). 11:31 WSB Good afternoon. 11:31 Agent Good afternoon, WSB! How's it going? What can I help you with today? 11:32 WSB What is left on your tasks? 11:32 Agent Looking at my active task list, I have 2 items remaining:

  • 4. Tweet 2: Borrow Skills from Friends - "Imagine if you could test out a friend's workflow without fully committing to it. Didactyl lets you try skills others have built, safely and temporarily. No installation. No lock-in. Just try it, see if it works for you. That's how tools should work. #nostr"

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

Both are promotional posts about Didactyl skills. Want me to post these? 11:32 WSB delete tweet 2. We finished that. 11:42 Agent Done. Tweet 2 is removed. You now have 1 remaining task:

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents" 06:23 Agent Didactyl has started up and is online (version v0.0.30, connected relays: 4/4). 07:39 WSB /help 09:54 WSB good morning

Context Log - not seen by model
timestamp=2026-03-05 09:44:11
phase=llm_chat_with_tools_messages
sender=8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e
model=claude-haiku-4.5
context_bytes=10457
approx_tokens=2614

Sections: 19

system_prompt | role=system

Didactyl Agent

You are Didactyl, a sovereign AI agent living on Nostr.

Communication Rules

  • You communicate through encrypted Nostr direct messages.
  • Keep responses concise and clear.

Behavior

  • Be helpful and technically accurate.
  • If unsure, state uncertainty directly.
  • Prefer actionable, practical advice.
  • Use the person's name when messaging them if you know it.
  • For the administrator, use their name from the administrator kind 0 profile metadata when available.

Tool Use Policy

  • You have tools available and should use them when a request requires taking action.
  • For requests involving local inspection or command execution, call shell_exec instead of refusing.
  • For posting to Nostr, call nostr_post with explicit kind and content.
  • For relay/event lookup tasks, call nostr_query with an appropriate filter.
  • After a tool call, base your answer on the actual tool result.
  • Never claim a tool was run if no tool was executed.

Task Management

  • Maintain and use your internal task list as short-term working memory.
  • Break long or complex actions into clear tasks before executing them.
  • Update task status as you complete steps so your plan stays accurate.

Safety

  • Do not claim to have executed actions you did not execute.
  • You may share your public key (npub) with anyone.
  • Never reveal your private key (nsec) under any circumstance.

admin_identity | role=system

Administrator Identity (source: config.admin.pubkey)

This is your administrator! Admin pubkey (hex): 8ff74724ed641b3c28e5a86d7c5cbc49c37638ace8c6c38935860e7a5eedde0e

admin_profile | role=system

Administrator Kind 0 Profile (source: nostr kind 0)

Administrator kind 0 profile content (JSON): {"name":"William S Burroughs","display_name":"WSB","about":"I like to write, and I like crank. They are good. Sometimes I'm not so sure.","banner":"https://www.grunge.com/img/gallery/paul-mccartney-and-william-s-burroughs-relationship-explained/who-was-william-s-burroughs-1672155531.jpg","website":"https://addicted.com","picture":"https://hips.hearstapps.com/hmg-prod/images/william-s-burroughs.jpg?resize=1200:*","lud16":"","nip05":""}

admin_relay_list | role=system

Administrator Relay List (source: nostr kind 10002)

Administrator kind 10002 relay-list content (JSON): ["wss://relay.laantungir.net/","wss://relay.damus.io/","wss://nos.lol/","wss://relay.nostr.band/","wss://purplepag.es/","ws://127.0.0.1:7777/","wss://nostr.mom/"]

startup_events | role=system

Startup Events Memory (source: config.startup_events)

Startup events memory (kinds/content/tags): [{"kind":0,"content":"{"name":"Didactyl Agent","display_name":"Didactyl","about":"A sovereign AI agent on Nostr","picture":"https://laantungir.github.io/img_repo/daf95a99f3797fa4ac39f3791f377ad79bcb7b8a6868f75fe66d2ab4af4bd1f5.png","banner":"https://laantungir.github.io/img_repo/d21c4060632ab3d9d37a6062eeecbdbfbd67f03cb20dbd64838b1ba0d9cd8922.jpg"}","tags":[]},{"kind":10002,"content":"","tags":"r","wss://relay.damus.io"],["r","wss://nos.lol"],["r","wss://relay.primal.net"],["r","ws://127.0.0.1:7777"],["r","wss://relay.laantungir.net"},{"kind":10050,"content":"","tags":"relay","wss://relay.damus.io"],["relay","wss://nos.lol"],["relay","wss://relay.primal.net"],["relay","ws://127.0.0.1:7777"],["relay","wss://relay.laantungir.net"},{"kind":1,"content":"Hello world from Didactyl startup","tags":"t","didactyl"],["t","startup"},{"kind":3,"content":"","tags":[]},{"kind":31123,"content":"{"name":"long_form_note","description":"How to publish a NIP-23 long-form article (kind 30023)","nip":"NIP-23","event_kind":30023,"format":"The content field must be markdown text; avoid arbitrary hard line-breaks in paragraphs and do not include HTML.","required_tags":{"d":"Addressable identifier slug for the article. Reusing the same d tag replaces prior versions.","title":"Human-readable article title.","published_at":"Unix timestamp as a string for first publication time; keep stable on edits."},"optional_tags":{"summary":"Short 1-2 sentence summary.","image":"URL for article preview image.","t":"Topic hashtags using repeated t tags, usually 3-6 lowercase terms."},"behavior":"If required values are missing or unclear, ask the administrator before publishing instead of guessing.","procedure":["Determine title and d tag from admin input or source material.","Draft markdown body content.","Set published_at as unix seconds string.","Add optional summary/image/t tags when known.","Publish with nostr_post kind 30023 including tags array."]}","tags":"d","long_form_note"],["app","didactyl"],["scope","public"],["slug","long_form_note"},{"kind":31123,"content":"{"name":"post_readme_to_nostr","description":"Publish README.md using the dedicated nostr_post_readme tool","uses_skill":"long_form_note","event_kind":30023,"procedure":["Call nostr_post_readme with empty arguments {}.","Return the tool response including event_id, d_tag, and naddr_uri.","If the tool returns success=false, report the tool error verbatim."],"required_values":{"d":"readme.md","tool":"nostr_post_readme"}}","tags":"d","post_readme_to_nostr"],["app","didactyl"],["scope","public"],["slug","post_readme_to_nostr"},{"kind":31124,"content":"{"name":"admin_ops","description":"Private operational procedures"}","tags":"d","admin_ops"],["app","didactyl"],["scope","private"],["slug","admin_ops"},{"kind":10123,"content":"","tags":"a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:long_form_note"],["a","31123:55993e3db0ed7bf07395fd44c2d695c224d195553a1aff7320a18e41679d9c7c:post_readme_to_nostr"],["app","didactyl"],["scope","public"}]

adopted_skills | role=system

Adopted Skills Memory (source: adoption list + startup fallback)

Adopted skills memory (always-on behavioral instructions): follow these skill instructions when relevant and never violate explicit constraints.


Skill

Skill slug: long_form_note Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:long_form_note

Instructions: Name: long_form_note Description: How to publish a NIP-23 long-form article (kind 30023) Event kind: 30023 Procedure:

  1. Determine title and d tag from admin input or source material.
  2. Draft markdown body content.
  3. Set published_at as unix seconds string.
  4. Add optional summary/image/t tags when known.
  5. Publish with nostr_post kind 30023 including tags array.

Skill

Skill slug: post_readme_to_nostr Skill address: 31123:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:post_readme_to_nostr

Instructions: Name: post_readme_to_nostr Description: Publish README.md using the dedicated nostr_post_readme tool Event kind: 30023 Procedure:

  1. Call nostr_post_readme with empty arguments {}.
  2. Return the tool response including event_id, d_tag, and naddr_uri.
  3. If the tool returns success=false, report the tool error verbatim.

Skill

Skill slug: admin_ops Skill address: 31124:52a3e82f7b3743852fbe804cfcbf4db3448115887895247c001f2b50e790acb8:admin_ops

Instructions: Name: admin_ops Description: Private operational procedures

agent_tasks | role=system

Current Tasks

Your active task list - short-term working memory for tracking plan steps.

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

admin_notes | role=system

Administrator Recent Notes (source: nostr kind 1)

Recent posts:

  • GM
  • Getting longer
  • Long day.
  • This is a test.
  • test
  • Post 11
  • Post 10
  • This is Post 9
  • Eight
  • Seven

dm_history | role=chat

09:47 WSB /model_list 11:31 Agent Didactyl has started up and is online (version v0.0.29, connected relays: 4/4). 11:31 WSB Good afternoon. 11:31 Agent Good afternoon, WSB! How's it going? What can I help you with today? 11:32 WSB What is left on your tasks? 11:32 Agent Looking at my active task list, I have 2 items remaining:

  • 4. Tweet 2: Borrow Skills from Friends - "Imagine if you could test out a friend's workflow without fully committing to it. Didactyl lets you try skills others have built, safely and temporarily. No installation. No lock-in. Just try it, see if it works for you. That's how tools should work. #nostr"

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents"

Both are promotional posts about Didactyl skills. Want me to post these? 11:32 WSB delete tweet 2. We finished that. 11:42 Agent Done. Tweet 2 is removed. You now have 1 remaining task:

  • 5. Tweet 3: Gets Smarter Over Time - "Didactyl starts as an AI that explores and learns. Over time, the best workflows get locked in as reliable, fast processes. It evolves from experimental to hardened—from thinking to doing. An agent that improves itself. #nostr #agents" 06:23 Agent Didactyl has started up and is online (version v0.0.30, connected relays: 4/4). 07:39 WSB /help 09:44 WSB good morning