Hello HN!
The day has finally come to stop adding features and start sharing what I've been building the last 5-6 months.
It's a bit of CrewAI, OpenDevon, LangFuse/Cloud all in one, providing devs who prefer TypeScript an integrated framework thats provides a lot out of the box to start experimenting and building agents with.
It started after peeking at the LangChain docs a few times and never liking the example code. I began experimenting with automating a simple Jira request from the engineering team to add an index to one of our Google Spanner databases (for context I'm the DevOps/SRE lead for an AdTech company).
It incudes the tooling we're building out to automate processes from a DevOps/SRE perspective, which initially includes a configurable GitLab merge request AI reviewer.
The initial layer above Aider (https://aider.chat/) grew into coding agent and an autonomous agent with LLM-independent function calling with auto-generated function schemas.
And as testing via the CLI became unwieldy soon grew database persistence, tracing, a Web UI and human-in-the-loop functionality.
One of the more interesting additions is the new autonomous agent which generates Python code that can call the available functions.
Using the pyodide library the tool objects are proxied into the Python scope and executed in a WebAssembly sandbox.
As its able to perform multiple calls and validation logic in a single control loop, it can reduce the cost and latency, getting the most out of the frontier LLMs calls with better reasoning.
Benchmark runners for the autonomous agent and coding benchmarks are in the works to get some numbers on the capabilities so far. I'm looking forward to getting back to implementing all the ideas around improving the code and autonomous agents from a metacognitive perspective after spending time on docs, refactorings and tidying up recently.
Check it out at https://github.com/trafficguard/nous
I wanted to try this out (specifically the web UI), so I configured the env file, adjusted the docker compose file, ran `docker compose up` and it "just works".
It would be great if there was a basic agent example or two pre-configured, so you can set this up and instantly get a better sense of how everything works from a more hands-on perspective.