Protocol-first
Every MIST tool communicates via the MIST message protocol. Transport is pluggable — HTTP, file, stdio, channels.
19 composable packages
Use just the packages you need. Protocol and transport for routing. Trace and metrics for observability. Checkpoint for durability.
Zero external dependencies
go.mod lists no third-party dependencies. Everything is built on the Go standard library.
652+ tests
Full test suite with race detection and fuzz targets. Every package tested in isolation and integration.
Production-hardened
Used in swe-bench-fast (6.3x speedup on ARM64) and all MIST stack tools.
Well-typed protocol
Strongly typed message envelopes, role definitions, and wire format. No interface{} in the protocol layer.
Example
mist-go
import (
"github.com/greynewell/mist-go/protocol"
"github.com/greynewell/mist-go/transport"
"github.com/greynewell/mist-go/trace"
)
// Create a typed message with a structured payload
msg, err := protocol.New("matchspec", protocol.TypeEvalRun, protocol.EvalRun{
Suite: "swe-bench-verified",
InferURL: "http://localhost:8081",
})
// File transport for local dev, HTTP for production
t, err := transport.Dial("http://localhost:8080")
if err := t.Send(ctx, msg); err != nil {
log.Fatal(err)
}
// Zero-overhead tracing propagates through context
ctx, span := trace.Start(ctx, "inference")
defer span.End("ok")
span.SetAttr("model", "claude-sonnet-4-5")
span.SetAttr("tokens_out", 512)
matchspec, infermux, schemaflux, and tokentrace are all built on mist-go. Transport handling, configuration loading, circuit breaking, and tracing don't live in each tool — they live here, shared across the stack.
The design is protocol-first. Every message between tools uses the same `protocol.Message` envelope. The `transport` package carries it over HTTP, files, stdio, or in-process channels — swap implementations by changing a URL scheme, not by changing code.
`go.mod` lists no third-party dependencies. Everything is standard library.