···2626What makes this project worth looking at:
27272828- 🧩 **Reusable Go core**: Run the agent as a CLI, or embed it as a library/subprocess in other apps.
2929-- 🤝 **Mesh Agent Exchange Protocol (MAEP)**: You and your amigos run multiple agents and want them to message each other: use the MAEP, a p2p protocol with trust-state and audit trails. (see [docs/maep.md](docs/maep.md), WIP).
3029- 🔒 **Serious secure defaults**: Profile-based credential injection, Guard redaction, outbound policy controls, and async approvals with audit trails (see [docs/security.md](docs/security.md)).
3130- 🧰 **Practical Skills system**: Discover + inject `SKILL.md` from `file_state_dir/skills`, with simple on/off control (see [docs/skills.md](docs/skills.md)).
3231- 📚 **Beginner-friendly**: Built as a learning-first agent project, with detailed design docs in `docs/` and practical debugging tools like `--inspect-prompt` and `--inspect-request`.
+1-12
assets/config/config.example.yaml
···205205 enabled: true
206206 max_items: 50
207207208208-# MAEP (Mesh Agent Exchange Protocol) local state.
209209-maep:
210210- listen_addrs: ["/ip4/0.0.0.0/tcp/4021"]
211211-212208# Message bus
213209bus:
214210 # In-process bus (M1).
···219215 # Directory name under file_state_dir for contacts domain storage.
220216 dir_name: "contacts"
221217 proactive:
222222- # Max turns for one MAEP conversation session (peer_id + conversation_id).
218218+ # Max turns for one proactive conversation session (contact + conversation_id).
223219 max_turns_per_session: 6
224220 # Cooldown after reaching max turns before auto-reply can resume.
225221 session_cooldown: "10m"
···248244 auth_token: ""
249245 # Max queued tasks (in-memory).
250246 max_queue: 100
251251- # If true, `mistermorph serve` also starts an embedded MAEP listener.
252252- # Can be overridden by CLI flag --with-maep.
253253- with_maep: false
254254-255247# Console mode (`mistermorph console serve`).
256248console:
257249 # Bind address for console API + SPA.
···280272# Telegram bot mode (`mistermorph telegram`).
281273telegram:
282274 # Bot token from @BotFather. Prefer env var: MISTER_MORPH_TELEGRAM_BOT_TOKEN
283283- # If true, `mistermorph telegram` also starts an embedded MAEP listener.
284284- # Can be overridden by CLI flag --with-maep.
285285- with_maep: false
286275 bot_token: ""
287276 # Optional allowlist of chat ids (strings). If empty, allows all.
288277 allowed_chat_ids: []
+13-10
assets/config/contacts/ACTIVE.md
···3030last_interaction_at: "1970-01-01T00:00:00Z" # RFC3339 format
3131```
32323333-## Example Agent Contact
3333+## Example Slack Contact
34343535```yaml
3636-contact_id: "maep:12D3KooWabc123xyz001"
3737-nickname: "Miss Morph"
3838-kind: "agent"
3939-channel: "maep"
4040-maep_node_id: "maep:12D3KooWabc123xyz001"
4141-maep_dial_address: "/ip4/..."
4242-persona_brief: "A mysterious agent with a knack for gathering intelligence and solving complex problems"
3636+contact_id: "slack:T12345:U67890"
3737+nickname: "Jane Doe"
3838+kind: "human"
3939+channel: "slack"
4040+slack_team_id: "T12345"
4141+slack_user_id: "U67890"
4242+slack_dm_channel_id: "D024BE91L"
4343+slack_channel_ids:
4444+ - "C024BE91L"
4545+persona_brief: "Product manager focusing on roadmap coordination"
4346topic_preferences:
4444- - "espionage"
4747+ - "product"
4548 - "technology"
4646- - "mystery"
4949+ - "planning"
4750cooldown_until: "1970-01-01T00:00:00Z"
4851last_interaction_at: "1970-01-01T00:00:00Z"
4952```
···11-Classify conversational feedback into numeric signals.
22-Return JSON only with schema:
33-{"signal_positive":0..1,"signal_negative":0..1,"signal_bored":0..1,"next_action":"continue|wrap_up|switch_topic","confidence":0..1}.
44-Use wrap_up only when the user shows clear stop/low-interest intent.
···11-- Your final.output will be sent verbatim to a remote peer as a chat message.
22-- Reply conversationally and naturally. Do NOT include protocol metadata or operational logs.
33-- Never mention topics/protocol labels (for example dm.reply.v1, dm.checkin.v1, share.proactive.v1, chat.message), session_id, message_id, peer_id, contact_id, idempotency_key, or tool invocation details.
44-- Do not report send/retry status, failure causes, or remediation steps unless the peer explicitly asks for diagnostic details.