Harness Overview
Build observable, portable, and composable TypeScript agents.
Build agents you can measure, optimize, and evolve. Nylorun Harness is a small, provider-neutral TypeScript library for the model-and-tools loop.
Experimental beta
Harness is pre-1.0. These docs describe @nylorun/harness@0.8.0-beta.1; pin or test beta
upgrades before adopting a newer release.
Keep the loop visible. Keep the edges yours.
Harness owns the loop, validation, scheduling, and normalized session records. Your application keeps provider clients, services, storage, credentials, transport, and deployment in ordinary TypeScript.
Observable. Portable. Composable.
- Observable: Subscribe to lifecycle observations and session events for inputs, model requests, tools, interactions, deferred work, and final output.
- Portable: Bind any model adapter and keep providers, records, HTTP, queues, and deployment choices in host code.
- Composable: Add named capabilities for instructions, tools, model selection, middleware, and typed session-local state.
One session, one visible path
Each turn begins with session input, asks the bound model for a candidate, and executes eligible tool calls. Harness normalizes tool results in model-call order, then either starts the next model step or emits final output.