I build and maintain open-source AI agent systems and tools for semantic decisions. Most of my work is on nanobot, where I'm one of the maintainers, and fastjev, which I maintain as an independent continuation of SemIf.
I care about what happens after the first successful run: preserving the right state, recovering from provider failures, and keeping tool boundaries explicit. Long-horizon tasks are only one part of making an agent usable. Its behavior has to make sense to the person using it. Its security boundaries have to hold, and the interface has to help rather than get in the way. A confusing WebUI or TUI can make a capable model hard to use.
With fastjev, I'm working on making semantic decisions available through a Python SDK using open models on infrastructure you control. It handles choices, yes/no questions, and scores, so software can use the results directly.
I'm trying to understand multi-agent collaboration on open-ended problems, where the roles and division of labor are not fixed in advance. This is different from a hierarchy handing out predefined subtasks. LLM-based agents differ from human teams in their strengths, failure modes, and communication costs. Human-style task decomposition may not be a good default. I don't know what the right abstraction is yet.
I also maintain skills, a repository of reusable agent workflows for pull request review, verification, experiment planning, idea management, and technical writing.
I occasionally write about agent systems, debugging, machine learning, and security at chengyongru.github.io.




