706 KiB
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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:
- Your actual
credit_id(different from the API key) - 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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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:
- Your actual
credit_id(different from the API key) - 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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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:
- Provider: https://api.ppq.ai
- Model: claude-haiku-4.5
- Base URL: https://api.ppq.ai
- Max Tokens: 512
- Temperature: 0.7
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
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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:
- Provider: https://api.ppq.ai
- Model: claude-haiku-4.5
- Base URL: https://api.ppq.ai
- Max Tokens: 512
- Temperature: 0.7
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
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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:
- The API key might be in a different location — perhaps in a config file like
config.jsonrather than in Nostr events - It could be in a private Nostr event that wasn't included in the startup memory
- 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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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:
- The API key might be in a different location — perhaps in a config file like
config.jsonrather than in Nostr events - It could be in a private Nostr event that wasn't included in the startup memory
- 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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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:
- The API key might be in a different location — perhaps in a config file like
config.jsonrather than in Nostr events - It could be in a private Nostr event that wasn't included in the startup memory
- 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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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:
- The API key might be in a different location — perhaps in a config file like
config.jsonrather than in Nostr events - It could be in a private Nostr event that wasn't included in the startup memory
- 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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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:
- The API key might be in a different location — perhaps in a config file like
config.jsonrather than in Nostr events - It could be in a private Nostr event that wasn't included in the startup memory
- 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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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:
-
POST /topup/create/{method}- Create deposit invoices- Methods:
btc-lightning,btc,ltc,lbtc,xmr
- Methods:
-
GET /topup/status/{invoice_id}- Check topup status -
GET /topup/payment-methods- List supported payment methods -
POST /accounts/create- Create new account -
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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.
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
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.
<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 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-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" 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
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">
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→ 404https://api.ppq.ai/v1/billing→ 404https://api.ppq.ai/account/billing→ 404https://ppq.ai/api/billing→ 404
Likely options:
- Web dashboard – Check if there's a user dashboard at https://ppq.ai/ where you can log in to view billing
- Authentication required – The billing endpoint may exist but require an API key in the headers
- 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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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.
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→ 404https://api.ppq.ai/v1/billing→ 404https://api.ppq.ai/account/billing→ 404https://ppq.ai/api/billing→ 404
Likely options:
- Web dashboard – Check if there's a user dashboard at https://ppq.ai/ where you can log in to view billing
- Authentication required – The billing endpoint may exist but require an API key in the headers
- 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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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→ 404https://api.ppq.ai/v1/billing→ 404https://api.ppq.ai/account/billing→ 404https://ppq.ai/api/billing→ 404
Likely options:
- Web dashboard – Check if there's a user dashboard at https://ppq.ai/ where you can log in to view billing
- Authentication required – The billing endpoint may exist but require an API key in the headers
- 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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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:
- Check if there's a web dashboard at https://ppq.ai/ with a login
- Use an API key in the request headers if you have one
- 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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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:
- Check if there's a web dashboard at https://ppq.ai/ with a login
- Use an API key in the request headers if you have one
- 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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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:
- Provider: https://api.ppq.ai
- Model: claude-haiku-4.5
- Max tokens: 512
- Temperature: 0.7
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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:
- Provider: https://api.ppq.ai
- Model: claude-haiku-4.5
- Max tokens: 512
- Temperature: 0.7
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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:
- Jack Dorsey hasn't posted recently on the relays I'm connected to
- His posts may not be indexed on the relays currently available
- 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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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:
- Jack Dorsey hasn't posted recently on the relays I'm connected to
- His posts may not be indexed on the relays currently available
- 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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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:
-
Sunlight composition: Sunlight contains all wavelengths of visible light—red, orange, yellow, green, blue, and violet.
-
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.
-
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.
-
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
-
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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:
-
Sunlight composition: Sunlight contains all wavelengths of visible light—red, orange, yellow, green, blue, and violet.
-
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.
-
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.
-
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
-
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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_execinstead of refusing. - For posting to Nostr, call
nostr_postwith explicitkindandcontent. - For relay/event lookup tasks, call
nostr_querywith 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:
- 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.
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:
- 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.
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