A first-time contributor added native GO support to iii from start to finish in three days.
That means you can now turn any GO service into an iii worker. A gRPC API, a Kubernetes controller, a data pipeline. Register your functions and triggers, and the service is on the iii engine with everything else. Yes, a "kagent" can be just a worker with iii.
You can now compose GO services with workers written in Node, Python, and Rust. They share the same engine, the same triggers, the same function calls. An agent invoking a Go function doesn't know or care what language is on the other end. You can now get real-time discovery, extensibility, composability, and observability across your GO services without writing the integration work yourself. You can now expose GO functions to agents as tools. The function id is the tool. The schema is the function signature. Agents call GO the same way they call anything else on the engine.
This was possible in three days because of an early architectural decision by us. The small surface area of the SDK is the primitives: Worker, Trigger, and Function. That is the entire thing an SDK has to express. Porting iii to a new language is porting three concepts, not a framework. There is no orchestration logic to translate. There are no opinions about state machines or agent loops to argue with.
That small surface area is what lets the ecosystem expand without fragmenting. Every new language lands speaking the same three primitives, so a team running Node today gets GO interop the day it ships. The mental model of the system stays small even as the ecosystem grows.
For agents, the benefit is bigger. An agent just needs to understand the engine, regardless of how many services run on it or what languages they use.
Java and .NET are coming soon. The path is the same one this contributor walked. Want to add a new language? Create a GitHub issue today!
Marcus Elwin(@MarqKwesi), thank you. An entire GO SDK in three days is an amazing job.
Link to PR: https://t.co/GOWv7bfVVv
iii is end to end observable so an agent using it gets the same observability as any other component.
In iii the harness behavior is entirely your choice with zero friction on what you want it to do now or in the future. You can change it at any time as requirements evolve.
This gives you possibilities from agents observing their own execution to humans in the loop to agents watching agents and deploying refinements to the constraints. All while everything that happened is completely traceable and auditable during and after execution.
Most harnesses feel stuck while iii is a system platform that just happens to be a great harness by its fundamental design.
We’ve got a lot more around harnesses coming out soon too
@SiddheshKanawa8@mfpiccolo It's a good approach but extending and maintaining the harness becomes the hard part. Off the shelf doesn't fit enough usecases, custom is too hard to maintain. iii is filling this gap and many others by design.
@GRW1971@hasantoxr Yeah it's more that it makes it much smoother than "replaces" you can still use whatever services you like, or recreate them using iii workers (ex. temporal is just iii's queues and state workers)
A developer just killed the entire backend tooling stack with a single open-source engine.
→ Replaces agent harness, queues, sandboxing, apis and any other service with 3 primitives
→ TypeScript, Python, Rust support
→ Production-ready Docker setup included
→ 15K+ stars and growing fast