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
- autobench - Framework to compare the performance between different Go versions.
- go-benchmark-app - Powerful HTTP-benchmark tool mixed with Аb, Wrk, Siege tools. Gathering statistics and various parameters for benchmarks and comparison results.
- go-benchmarks - Few miscellaneous Go microbenchmarks. Compare some language features to alternative approaches.
- go-http-routing-benchmark - Go HTTP request router benchmark and comparison.
- go-json-benchmark - Go JSON benchmark.
- go-ml-benchmarks - benchmarks for machine learning inference in Go.
- go-web-framework-benchmark - Go web framework benchmark.
- go_serialization_benchmarks - Benchmarks of Go serialization methods.
- golang-benchmarks - a collection of golang benchmarks.
- golang-sql-benchmark - Collection of benchmarks for popular Go database/SQL utilities.
- gospeed - Go micro-benchmarks for calculating the speed of language constructs.
- kvbench - Key/Value database benchmark.
- skynet - Skynet 1M threads microbenchmark.
- speedtest-resize - Compare various Image resize algorithms for the Go language.
- gocostmodel - Benchmarks of common basic operations for the Go language.
- vizb - A CLI tool to visualize Go benchmark data in 4D.
-
-
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.
-
Programming Languages
Categories
Utilities
191
Software Packages
184
Database
153
Websites
141
Miscellaneous
117
Networking
108
Command Line
106
Third-party APIs
106
Testing
104
Web Frameworks
96
Data Structures and Algorithms
85
Meetups
83
Text Processing
76
Configuration
72
Distributed Systems
69
Database Drivers
66
Logging
64
Security
60
Messaging
59
Goroutines
50
Natural Language Processing
47
Images
44
Science and Data Analysis
43
Authentication and Authorization
41
Machine Learning
41
E-Books
40
JSON
40
Code Analysis
37
Server Applications
34
GUI
33
Bot Building
31
Financial
29
File Handling
28
Email
26
Game Development
25
ORM
25
Embeddable Scripting Languages
24
Date and Time
24
Go Tools
23
Job Scheduler
23
Template Engines
22
Artificial Intelligence
22
Serialization
21
Error Handling
19
Conferences
18
Query Language
17
Geographic
17
Continuous Integration
17
Build Automation
16
Validation
16
Benchmarks
16
Generators
15
Audio and Music
14
UUID
14
IoT (Internet of Things)
14
Editor Plugins
13
Blockchain
13
Forms
13
Go Generate Tools
12
Social Media
12
Video
12
Functional
11
Version Control
11
Gophers
11
Performance
10
Stream Processing
10
Style Guides
10
Reflection
9
Hardware
9
Microsoft Office
8
Go Compilers
7
WebAssembly
7
Workflow Frameworks
6
XML
6
OpenGL
6
Zero Trust
5
Package Management
5
Actor Model
5
Resource Embedding
4
Webhooks Server
4
Data Integration Frameworks
4
Windows
4
CSS Preprocessors
3
Dynamic DNS
3
Authentication and OAuth
1
Sub Categories
Search and Analytic Databases
698
Utility/Miscellaneous
403
HTTP Clients
293
Standard CLI
154
Routers
146
Free e-books
125
Other Software
112
DevOps Tools
106
Transliteration
87
Reddit
83
Testing Frameworks
72
Uncategorized
60
Tutorials
55
Advanced Console UIs
48
Databases Implemented in Go
47
Caches
31
SQL Query Builders
29
NoSQL Database Drivers
29
Dependency Injection
26
Parsers/Encoders/Decoders
25
Database Tools
23
Middlewares
23
Database Schema Migration
23
Mock
21
Relational Database Drivers
21
Project Layout
20
E-books for purchase
19
Miscellaneous Data Structures and Algorithms
19
Morphological Analyzers
17
Markup Languages
16
Strings
11
Twitter
11
Text Analysis
10
Queues
9
Translation
9
Tokenizers
9
Scrapers
9
Bloom and Cuckoo Filters
9
Formatters
8
Maps
6
Bit-packing and Compression
6
Trees
6
Selenium and browser control tools
6
Interfaces to Multiple Backends
6
Regular Expressions
6
Microsoft Excel
6
Language Detection
5
Pipes
4
Guided Learning
4
Data Structure and Algorithm Collections
4
Sets
4
Nullable Types
3
Iterators
3
Slugifiers
3
Sanitation
2
Bit Sets
2
Fuzzing and delta-debugging/reducing/shrinking
2
Microsoft Word
1
RSS
1
Fail injection
1
Keywords
golang
1,269
go
1,118
cli
115
golang-library
106
database
86
json
76
http
64
testing
64
sql
55
docker
52
golang-package
51
kubernetes
46
framework
45
mysql
43
library
42
postgresql
40
middleware
35
concurrency
35
redis
34
parser
34
api
33
command-line
32
performance
31
logging
31
configuration
31
distributed-systems
31
orm
30
cache
29
security
29
microservice
27
tui
27
devops
27
sqlite
26
microservices
26
terminal
25
generics
25
machine-learning
25
awesome-go
25
config
24
server
24
validation
24
grpc
24
router
23
log
22
cloud-native
22
linux
22
rest-api
22
macos
22
logger
21
dependency-injection
21