Skip to content

goodall

Small Go agent-loop library with an optional goodall/typesafe package that uses Jev as a tool or hook beside chat models.

LibrarybetaMIT

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

TypeQuestionAnswers
ChoiceHow should this email be triaged?(inferred)—

How it works

  1. Build an agent with providers and tools
  2. Add goodall/typesafe as a tool or hook
  3. Agent or hook asks Jev typed questions
  4. 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

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.

    LibrarybetaRuby
  • Ax, a DSPy-style multi-language LLM framework, listed with a native TypeSafe provider for Boolean, Choice, Score and raw Jev questions.

    PluginproductionTypeScript
  • Effect TypeScript library whose @effect/ai-typesafe package maps classify, probability and rating operations to Jev questions.

    ProjectproductionTypeScript
  • PHP monorepo whose Polyglot module adds a TypeSafe driver for typed Noul, Choice and Score decisions alongside LLM inference.

    ProjectproductionPHP
  • Elixir library for unified LLM calls across providers, with an evaluate interface that calls Jev via TypeSafe or OpenRouter.

    ProjectproductionElixir
  • Self-hosted multi-tenant AI agent platform listed as including optional TypeSafe client tools for classification, scoring and yes/no.

    LibraryproductionPython