goodall
Small Go agent-loop library with an optional goodall/typesafe package that uses Jev as a tool or hook beside chat models.
Overview
goodall is a small Go library for programs where an AI model uses tools. It provides the agentic loop: a streamed conversation with a model calling the functions you give it until the model finishes or a budget stops it. The core has no dependencies beyond the standard library and talks to Anthropic, OpenRouter and OpenAI-compatible servers through provider packages supporting streaming, images and PDFs, extended thinking, tool schemas inferred from Go types, prompt caching and cost reporting. An optional chat package adds threads, storage and streaming writers for chat products.
The Jev part is the optional goodall/typesafe package, a blocking client for TypeSafe's judgment model that sits beside the providers as a tool an agent calls or a hook. A triage example reads a mailbox (with a bundled synthetic inbox by default) and asks Jev about every message. Design notes document where a judgment model fits beside providers and how the client differs from another Go TypeSafe library.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | How should this email be triaged?(inferred) | — |
How it works
- Build an agent with providers and tools
- Add goodall/typesafe as a tool or hook
- Agent or hook asks Jev typed questions
- Continue the loop using the answers
Strengths
- Zero-dependency core
- Jev integrated as a tool rather than a provider
- Documented design rationale
Caveats
- Jev package is optional and small
- Requires Go 1.27+
Getting started
go get github.com/bensyverson/goodall and use the goodall/typesafe package with TYPESAFE_API_KEY.At a glance
- Type
- Library
- Status
- beta
- Language
- Go
- Runtime
- library
- Has code
- yes
- License
- MIT
Use cases and integrations
How curated lists describe it
An optional TypeSafe package in a Go Agent library, using Jev as a tool or routing judge alongside chat models.
logicrw/awesome-jev-projects
Frequently asked questions
Is Jev a provider in goodall?
No, it sits beside providers as a tool or hook.
Is there an example?
Yes, a mailbox triage example that asks Jev about each message.
Which chat providers are supported?
Anthropic, OpenRouter and OpenAI-compatible servers.
Related projects
Ruby gem making semantic checks ordinary methods: feels?, decide and score on model fields, with Rails validations.
LibrarybetaRubyAx, a DSPy-style multi-language LLM framework, listed with a native TypeSafe provider for Boolean, Choice, Score and raw Jev questions.
PluginproductionTypeScriptEffect TypeScript library whose @effect/ai-typesafe package maps classify, probability and rating operations to Jev questions.
ProjectproductionTypeScriptPHP monorepo whose Polyglot module adds a TypeSafe driver for typed Noul, Choice and Score decisions alongside LLM inference.
ProjectproductionPHPElixir library for unified LLM calls across providers, with an evaluate interface that calls Jev via TypeSafe or OpenRouter.
ProjectproductionElixirSelf-hosted multi-tenant AI agent platform listed as including optional TypeSafe client tools for classification, scoring and yes/no.
LibraryproductionPython