the simplest
agent harness
of them all
A minimal Go library for building agent loops with tool calling, streaming, and skills — no magic, just harness.
Get Started →
Features
01
Agent Loop
Streams LLM responses, handles tool calls automatically, and loops until the task is done.
02
Built-in Tools
read_file, list_files, write_file, run_command, web_fetch — ready out of the box.
03
Skills System
Load skill definitions from markdown files with YAML frontmatter, discovered from ~/.agents/skills and ./.agents/skills.
04
OpenAI-Compatible Client
Custom client with SSE streaming support. Works with any OpenAI-compatible API.
05
Terminal UI
Interactive TUI for running agents directly in your terminal.
06
Go Library
Import and use as a library in your own Go programs. No framework lock-in.
Usage
package main
import (
"context"
"github.com/mishankov/hrns/loop"
"github.com/mishankov/hrns/openai"
"github.com/mishankov/hrns/tools"
)
func main() {
client := openai.NewClient(
openai.WithAPIKey("sk-..."),
)
agnt := loop.New(
client,
"You are a helpful assistant.",
map[string]loop.Tool{
"read_file": tools.ReadFileTool,
"write_file": tools.WriteFileTool,
"run_command": tools.CommandTool,
},
)
go agnt.RunLoop(context.Background(), []openai.Message{
openai.UserMessage("List files in the current directory"),
}, "gpt-4o")
for chunk := range agnt.Chunks() {
// handle streamed chunks
}
}
Tutorials
Getting Started with hrns
Coming Soon
Writing Custom Tools
Coming Soon
Building a Skill
Coming Soon
Running Agents Non-Interactively
Coming Soon
Subagents & Orchestration
Coming Soon