I've been using it with Opencode Go, Ollama, and Claude Code (it can delegate tasks to models through all those, so you can have Claude plan and Deepseek Flash build); I really like it.
I ran into that problem with the agent reporting that subagents succeeded, or work had been done, where it hadn't ("I said I tested that, but I didn't. That's on me. Won't happen again"), so I built a self-check enforcement system for it. You or your agent can set up the system by reading this: https://github.com/obelisk-complex/hermes-agent/blob/main/self-check-enforcement-system-v15.md
It includes the source patch which adds a hook on_output; this allows you to intercept text sent directly from the LLM to the user, which in vanilla is unblockable. So, this system ensures that if something remains unfinished, the LLM can't say it's done; it has to acknowledge what it didn't do before it can send you a message to close the conversation loop. I've built the fork to automatically merge upstream changes around this patch daily at 0400 Pacific time, so I should stay up to date (ish).
I also put in a feature request to get this added upstream. Feature request here: https://github.com/NousResearch/hermes-agent/issues/45881
You asked for criticism and advice, and that's exactly what I offered. It's based on my own experience here. I was offering it to be helpful. Just what exactly are you trying to achieve with this response? Because yeah, I'm not getting attacked, I'm getting lectured. For offering advice when it was solicited.
I'm certain you don't see the problem here, so I'm out. But for the love of Christ, just use AI to set up, harden, and manage a Matrix server instead of wasting tokens building your own application. You'll end up with something much more secure than an app with a possibly-bad crypto implementation that you don't have the experience to see, find, or fix.