Fan-out & Aggregate
Dispatch a single request to multiple upstreams in parallel and combine their responses — merge JSON objects, wrap into an array, or namespace by upstream name.
flows:- path: /api/summaryupstreams:- url: http://users:8081- url: http://orders:8082aggregation: mergebest_effort: trueon_conflict:policy: preferprefer_upstream: users
Resilient by Default
Per-upstream circuit breaker, configurable retry with backoff, and load balancing across multiple hosts — out of the box, via YAML. No code required.
policy:retry:attempts: 3backoff: exponentialcircuit_breaker:threshold: 0.5timeout: 10sload_balancer:strategy: round_robin
Extend with Plugins
Hook into request and response phases using dynamic .so plugins — modify headers, transform responses, validate tokens, or short-circuit requests.
package mainimport "github.com/starwalkn/kono/sdk"type Plugin struct{}func (p *Plugin) Info() sdk.PluginInfo {return sdk.PluginInfo{Name: "snakeify",Version: "v1",Author: "starwalkn",}}func (p *Plugin) Type() sdk.PluginType {return sdk.PluginTypeResponse}func (p *Plugin) Execute(ctx sdk.Context) error {// transform response JSON keys// to snake_casereturn snakeify(ctx.Response())}