An open API service indexing awesome lists of open source software.

awesome-go

A curated list of awesome Go frameworks, libraries and software
https://github.com/avelino/awesome-go

Last synced: 1 day ago
JSON representation

  • Actor Model

    • Ergo - An actor-based Framework with network transparency for creating event-driven architecture in Golang. Inspired by Erlang.
    • Goakt - Fast and Distributed Actor framework using protocol buffers as message for Golang.
    • Hollywood - Blazingly fast and light-weight Actor engine written in Golang.
    • ProtoActor - Distributed actors for Go, C#, and Java/Kotlin.
    • asyncmachine-go/pkg/machine - Graph control flow library (AOP, actor, state-machine).
  • Artificial Intelligence

    • langchaingo - LangChainGo is a framework for developing applications powered by language models.
    • LocalAI - Open Source OpenAI alternative, self-host AI models.
    • fun - The simplest but powerful way to use large language models (LLMs) in Go.
    • OllamaFarm - Manage, load-balance, and failover packs of Ollamas.
    • chromem-go - Embeddable vector database for Go with Chroma-like interface and zero third-party dependencies. In-memory with optional persistence.
    • Ollama - Run large language models locally.
    • goai - Go SDK for building AI applications. One SDK, 20+ providers. Inspired by Vercel AI SDK.
    • hotplex - AI Agent runtime engine with long-lived sessions for Claude Code, OpenCode, pi-mono and other CLI AI tools. Provides full-duplex streaming, multi-platform integrations, and secure sandbox.
    • langgraphgo - A Go library for building stateful, multi-actor applications with LLMs, built on the concept of LangGraph,with a lot of builtin Agent architectures.
    • AegisFlow - AI gateway for routing, securing, and monitoring LLM traffic across 10+ providers. OpenAI-compatible API, WASM policy plugins, canary rollouts, real-time dashboard.
    • ai - A Go toolkit for building AI agents and applications across multiple providers with unified LLM, embeddings, tool calling, and MCP integration.
    • localaik - LocalStack-style local emulation of OpenAI and Gemini APIs; single Docker container, llama.cpp + Gemma 3 backend.
    • otellix - OpenTelemetry-native LLM observability and budget guardrails for cost-constrained production environments.
    • routex - YAML-driven multi-agent AI runtime for Go with Erlang-style supervision, MCP tool server support, and a CLI.
    • Aetheris - AI Agent execution runtime with event sourcing, checkpoint recovery, and At-Most-Once execution guarantee. Written in Go.
    • agent-sdk-go - Go SDK for building durable AI agents on Temporal with support for tools, MCP, human approvals, and sub-agent delegation.
    • dakera-go - Official Go client SDK for the Dakera self-hosted agent memory server, providing typed interfaces for memory store/recall, session management, namespace operations, and decay configuration.
    • mcp-go - Go implementation of the Model Context Protocol for building MCP servers and clients in Go.
    • trpc-agent-go - Framework for building LLM-based multi-agent systems.
    • web-researcher-mcp - MCP server providing AI assistants with web search, content extraction, and multi-source research capabilities. Single binary, 5 search providers with circuit-breaker failover, 4-tier scraping pipeline.
    • zenflow - Multi-agent orchestration & workflow engine. Declarative YAML workflows, LLM coordinator with hub-and-spoke mailboxes, race-safe delivery. One YAML file, one Go binary. Runs on any goai-supported provider.
    • skillreaper - CLI that scans AI agent session transcripts to identify and safely quarantine unused skills, MCP servers, and agents across Claude Code, Codex CLI, Hermes, OpenCode, Cursor, and OpenClaw.
  • Audio and Music

    • flac - Native Go FLAC encoder/decoder with support for FLAC streams.
    • gaad - Native Go AAC bitstream parser.
    • GoAudio - Native Go Audio Processing Library.
    • gosamplerate - libsamplerate bindings for go.
    • malgo - Mini audio library.
    • minimp3 - Lightweight MP3 decoder library.
    • PortAudio - Go bindings for the PortAudio audio I/O library.
    • id3v2 - ID3 decoding and encoding library for Go.
    • beep - A simple library for playback and audio manipulation.
    • go-mpris - Client for mpris dbus interfaces.
    • beep - A simple library for playback and audio manipulation.
    • Oto - A low-level library to play sound on multiple platforms.
    • music-theory - Music theory models in Go.
    • voxrai-ai - AI voice agents with a JSON configuration, STT → LLM → TTS pipelines over WebSocket and WebRTC
  • Authentication and Authorization

    • authboss - Modular authentication system for the web. It tries to remove as much boilerplate and "hard things" as possible so that each time you start a new web project in Go, you can plug it in, configure it, and start building your app without having to build an authentication system each time.
    • branca - branca token [specification implementation](https://github.com/tuupola/branca-spec) for Golang 1.15+.
    • cookiestxt - provides a parser of cookies.txt file format.
    • go-guardian - Go-Guardian is a golang library that provides a simple, clean, and idiomatic way to create powerful modern API and web authentication that supports LDAP, Basic, Bearer token, and Certificate based authentication.
    • go-jose - Fairly complete implementation of the JOSE working group's JSON Web Token, JSON Web Signatures, and JSON Web Encryption specs.
    • gologin - chainable handlers for login with OAuth1 and OAuth2 authentication providers.
    • gorbac - provides a lightweight role-based access control (RBAC) implementation in Golang.
    • gosession - This is quick session for net/http in GoLang. This package is perhaps the best implementation of the session mechanism, or at least it tries to become one.
    • goth - provides a simple, clean, and idiomatic way to use OAuth and OAuth2. Handles multiple providers out of the box.
    • jeff - Simple, flexible, secure, and idiomatic web session management with pluggable backends.
    • jwt - Lightweight JSON Web Token (JWT) library.
    • jwt - Safe, simple, and fast JSON Web Tokens for Go.
    • jwt-auth - JWT middleware for Golang http servers with many configuration options.
    • jwt-go - A full featured implementation of JSON Web Tokens (JWT). This library supports the parsing and verification as well as the generation and signing of JWTs.
    • jwx - Go module implementing various JWx (JWA/JWE/JWK/JWS/JWT, otherwise known as JOSE) technologies.
    • keto - Open Source (Go) implementation of "Zanzibar: Google's Consistent, Global Authorization System". Ships gRPC, REST APIs, newSQL, and an easy and granular permission language. Supports ACL, RBAC, and other access models.
    • oauth2 - Successor of goauth2. Generic OAuth 2.0 package that comes with JWT, Google APIs, Compute Engine, and App Engine support.
    • oidc - Easy to use OpenID Connect client and server library written for Go and certified by the OpenID Foundation.
    • openfga - Implementation of fine-grained authorization based on the "Zanzibar: Google's Consistent, Global Authorization System" paper. Backed by [CNCF](https://www.cncf.io/).
    • osin - Golang OAuth2 server library.
    • otpgo - Time-Based One-Time Password (TOTP) and HMAC-Based One-Time Password (HOTP) library for Go.
    • paseto - Golang implementation of Platform-Agnostic Security Tokens (PASETO).
    • scs - Session Manager for HTTP servers.
    • securecookie - Efficient secure cookie encoding/decoding.
    • session - Go session management for web servers (including support for Google App Engine - GAE).
    • sessions - Dead simple, highly performant, highly customizable sessions service for go http servers.
    • sjwt - Simple jwt generator and parser.
    • goiabada - An open-source authentication and authorization server supporting OAuth2 and OpenID Connect.
    • permissions - Library for keeping track of users, login states, and permissions. Uses secure cookies and bcrypt.
    • casbin - Authorization library that supports access control models like ACL, RBAC, and ABAC.
    • loginsrv - JWT login microservice with pluggable backends such as OAuth2 (Github), htpasswd, osiam.
    • scope - Easily Manage OAuth2 Scopes In Go.
    • sessionup - Simple, yet effective HTTP session management and identification package.
    • x509proxy - Library to handle X509 proxy certificates.
    • spicedb - A Zanzibar-inspired database that enables fine-grained authorization.
    • go-iam - Developer-first Identity and Access Management system with a simple UI.
    • otpgen - Library to generate TOTP/HOTP codes.
    • go-githubauth - Utilities for GitHub authentication: generate and use GitHub application and installation tokens.
    • go-jwt - JWT authentication package providing access tokens and refresh tokens with fingerprinting, Redis storage, and automatic refresh capabilities.
    • authgate - A lightweight OAuth 2.0 Authorization Server supporting Device Authorization Grant ([RFC 8628](https://datatracker.ietf.org/doc/html/rfc8628)), Authorization Code Flow with PKCE ([RFC 6749](https://datatracker.ietf.org/doc/html/rfc6749) + [RFC 7636](https://datatracker.ietf.org/doc/html/rfc7636)), and Client Credentials Grant for machine-to-machine authentication.
    • go-jwt - A JWT (JSON Web Token) library for Go.
  • Authentication and OAuth

    • permissions2 - Library for keeping track of users, login states, and permissions. Uses secure cookies and bcrypt.
  • Benchmarks

    • Other Software

  • Blockchain

    • cometbft - A distributed, Byzantine fault-tolerant, deterministic state machine replication engine. It is a fork of Tendermint Core and implements the Tendermint consensus algorithm.
    • cosmos-sdk - A Framework for Building Public Blockchains in the Cosmos Ecosystem.
    • gno - A comprehensive smart contract suite built with Golang and Gnolang, a deterministic, purpose-built Go variant for blockchains.
    • go-ethereum - Official Go implementation of the Ethereum protocol.
    • gosemble - A Go-based framework for building Polkadot/Substrate-compatible runtimes.
    • gossamer - A Go implementation of the Polkadot Host.
    • kubo - An IPFS implementation in Go. It provides content-addressable storage which can be used for decentralized storage in DApps. It is based on the IPFS protocol.
    • lnd - A complete implementation of a Lightning Network node.
    • solana-go - Go library to interface with Solana JSON RPC and WebSocket interfaces.
    • tendermint - High-performance middleware for transforming a state machine written in any programming language into a Byzantine Fault Tolerant replicated state machine using the Tendermint consensus and blockchain protocols.
    • nview - Local monitoring tool for a Cardano Node. It's a TUI (terminal user interface) designed to fit most screens.
    • tronlib - A comprehensive, production-ready Go SDK for interacting with the TRON blockchain with TRC20 token support.
    • pactus - A full-node implementation of the Pactus blockchain in Go.
  • Bot Building

    • go-joe - A general-purpose bot library inspired by Hubot but written in Go.
    • bot - Zero-dependencies Telegram Bot library with additional UI components.
    • echotron - An elegant and concurrent library for Telegram Bots in Go.
    • ephemeral-roles - A Discord bot for managing ephemeral roles based upon voice channel member presence.
    • go-chat-bot - IRC, Slack & Telegram bot written in Go.
    • go-sarah - Framework to build a bot for desired chat services including LINE, Slack, Gitter, and more.
    • go-tg - Generated from official docs Go client library for accessing Telegram Bot API, with batteries for building complex bots included.
    • go-tgbot - Pure Golang Telegram Bot API wrapper, generated from swagger file, session-based router, and middleware.
    • go-twitch-irc - Library to write bots for twitch.tv chat
    • Golang CryptoTrading Bot - A golang implementation of a console-based trading bot for cryptocurrency exchanges.
    • govkbot - Simple Go [VK](https://vk.com) bot library.
    • hanu - Framework for writing Slack bots.
    • larry - Larry 🐦 is a really simple Twitter bot generator that tweets random repositories from Github built in Go.
    • margelet - Framework for building Telegram bots.
    • micha - Go Library for Telegram bot api.
    • olivia - A chatbot built with an artificial neural network.
    • slack-bot - Ready to use Slack Bot for lazy developers: Custom commands, Jenkins, Jira, Bitbucket, Github...
    • slacker - Easy to use framework to create Slack bots.
    • slackscot - Another framework for building Slack bots.
    • tbot - Telegram bot server with API similar to net/http.
    • telebot - Telegram bot framework is written in Go.
    • telego - Telegram Bot API library for Golang with full one-to-one API implementation.
    • teleterm - Telegram Bot Exec Terminal Command.
    • Tenyks - Service oriented IRC bot using Redis and JSON for messaging.
    • wayback - A bot for Telegram, Mastodon, Slack, and other messaging platforms archives webpages.
    • arikawa - A library and framework for the Discord API.
    • telegram-bot-api - Simple and clean Telegram bot client.
    • telegram-bot-api - Simple and clean Telegram bot client.
    • TG - Telegram Bot Framework for Go.
    • Wisp - Event-driven trading framework for Go. Spot, perpetual futures, prediction markets. Multi-exchange (Bybit, Hyperliquid, Polymarket).
    • ymsdk - Go SDK for Yandex Messenger Bot API with type-safe models, automatic retry, and rate-limit handling.
  • Build Automation

    • gilbert - Build system and task runner for Go projects.
    • 1build - Command line tool to frictionlessly manage project-specific commands.
    • anko - Simple application watcher for multiple programming languages.
    • gaper - Builds and restarts a Go project when it crashes or some watched file changes.
    • gob - [Gradle](https://docs.gradle.org/)/[Maven](https://maven.apache.org/) like build tool for Go projects.
    • goyek - Create build pipelines in Go.
    • mage - Mage is a make/rake-like build tool using Go.
    • mmake - Modern Make.
    • Task - simple "Make" alternative.
    • taskctl - Concurrent task runner.
    • xc - Task runner with README.md defined tasks, executable markdown.
    • gaper - Builds and restarts a Go project when it crashes or some watched file changes.
    • gilbert - Build system and task runner for Go projects.
    • realize - Go build a system with file watchers and live to reload. Run, build and watch file changes with custom paths.
    • air - Air - Live reload for Go apps.
    • rex - Zero-config universal project runner. Detects your stack (Go, Node, Python, Rust, PHP, Zig, Elixir) and runs the right command.
  • Code Analysis

    • Routers

      • goimports - Tool to fix (add, remove) your Go imports automatically.
      • goreturns - Adds zero-value return statements to match the func return types.
      • staticcheck - staticcheck is `go vet` on steroids, applying a ton of static analysis checks you might be used to from tools like ReSharper for C#.
      • goimports - Tool to fix (add, remove) your Go imports automatically.
      • apicompat - Checks recent changes to a Go project for backwards incompatible changes.
      • asty - Converts golang AST to JSON and JSON to AST.
      • blanket - blanket is a tool that helps you catch functions which don't have direct unit tests in your Go packages.
      • ChainJacking - Find which of your Go lang direct GitHub dependencies is susceptible to ChainJacking attack.
      • Chronos - Detects race conditions statically
      • dupl - Tool for code clone detection.
      • errcheck - Errcheck is a program for checking for unchecked errors in Go programs.
      • fatcontext - Fatcontext detects nested contexts in loops or function literals.
      • go-checkstyle - checkstyle is a style check tool like java checkstyle. This tool inspired by java checkstyle, golint. The style referred to some points in Go Code Review Comments.
      • go-cleanarch - go-cleanarch was created to validate Clean Architecture rules, like a The Dependency Rule and interaction between packages in your Go projects.
      • go-critic - source code linter that brings checks that are currently not implemented in other linters.
      • go-mod-outdated - An easy way to find outdated dependencies of your Go projects.
      • goast-viewer - Web based Golang AST visualizer.
      • golang-ifood-sdk - iFood API SDK.
      • golangci-lint
      • golines - Formatter that automatically shortens long lines in Go code.
      • GoPlantUML - Library and CLI that generates text plantump class diagram containing information about structures and interfaces with the relationship among them.
      • goreturns - Adds zero-value return statements to match the func return types.
      • gostatus - Command line tool, shows the status of repositories that contain Go packages.
      • lint - Run linters as part of go test.
      • php-parser - A Parser for PHP written in Go.
      • revive - in replacement for `golint`.
      • testifylint
      • tickgit - CLI and go package for surfacing code comment TODOs (in any language) and applying a `git blame`to identify the author.
      • todocheck - Static code analyser which links TODO comments in code with issues in your issue tracker.
      • unconvert - Remove unnecessary type conversions from Go source.
      • usestdlibvars - A linter that detect the possibility to use variables/constants from the Go standard library.
      • vacuum - An ultra-super-fast, lightweight OpenAPI linter and quality checking tool.
      • validate - Automatically validates struct fields with tags.
      • wrapcheck - A linter to check that errors from external packages are wrapped.
      • stto - A light-weight superfast line of code counter written in pure Go.
      • gomarklint - Markdown linter with built-in HTTP link validation, single binary, no Node.js required.
      • structalign - Shows how a struct's fields could be reordered to use less memory, printing a diff instead of rewriting files.
  • Command Line

    • Advanced Console UIs

      • gommon/color - Style terminal text.
      • asciigraph - Go package to make lightweight ASCII line graph ╭┈╯ in command line apps with no other dependencies.
      • aurora - ANSI terminal colors that support fmt.Printf/Sprintf.
      • box-cli-maker - Make Highly Customized Boxes for your CLI.