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