Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

awesome-go

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

Last synced: about 1 hour ago
JSON representation

  • JSON

      • mapslice-json - Go MapSlice for ordered marshal/ unmarshal of maps in JSON.
      • ujson - Fast and minimal JSON parser and transformer that works on unstructured JSON.
      • JSON-to-Proto - Convert JSON to Protobuf online.
  • Meetups

  • Bot Building

    • go-joe - A general-purpose bot library inspired by Hubot but written in Go.
    • go-joe - A general-purpose bot library inspired by Hubot but written in Go.
    • telegram-bot-api - Simple and clean Telegram bot client.
    • 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.
    • Kelp - official trading and market-making bot for the [Stellar](https://www.stellar.org/) DEX. Works out-of-the-box, written in Golang, compatible with centralized exchanges and custom trading strategies.
    • telegram-bot-api - Simple and clean Telegram bot client.
  • Build Automation

    • gilbert - Build system and task runner for Go projects.
    • 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.
    • 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.
    • air - Air - Live reload for Go apps.
    • realize - Go build a system with file watchers and live to reload. Run, build and watch file changes with custom paths.
  • 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.
      • bubble-table - An interactive table component for bubbletea.
      • bubbles - TUI components for bubbletea.
      • bubbletea - Go framework to build terminal apps, based on The Elm Architecture.
      • cfmt - Contextual fmt inspired by bootstrap color classes.
      • cfmt - Simple and convenient formatted stylized output fully compatible with fmt library.
      • chalk - Intuitive package for prettifying terminal/console output.
      • colourize - Go library for ANSI colour text in terminals.
      • crab-config-files-templating - Dynamic configuration file templating tool for kubernetes manifest or general configuration files.
      • ctc - The non-invasive cross-platform terminal color library does not need to modify the Print method.
      • go-ataman - Go library for rendering ANSI colored text templates in terminals.
      • go-colorable - Colorable writer for windows.
      • go-colortext - Go library for color output in terminals.
      • go-isatty - isatty for golang.
      • go-palette - Go library that provides elegant and convenient style definitions using ANSI colors. Fully compatible & wraps the [fmt library](https://pkg.go.dev/fmt) for nice terminal layouts.
      • go-prompt - Library for building a powerful interactive prompt, inspired by [python-prompt-toolkit](https://github.com/jonathanslenders/python-prompt-toolkit).
      • gocui - Minimalist Go library aimed at creating Console User Interfaces.
      • gookit/color - Terminal color rendering tool library, support 16 colors, 256 colors, RGB color rendering output, compatible with Windows.
      • lipgloss - Declaratively define styles for color, format and layout in the terminal.
      • marker - Easiest way to match and mark strings for colorful terminal outputs.
      • mpb - Multi progress bar for terminal applications.
      • progressbar - Basic thread-safe progress bar that works in every OS.
      • pterm - A library to beautify console output on every platform with many combinable components.
      • simpletable - Simple tables in a terminal with Go.
      • spinner - Go package to easily provide a terminal spinner with options.
      • tabby - A tiny library for super simple Golang tables.
      • table - Small library for terminal color based tables.
      • tabular - Print ASCII tables from command line utilities without the need to pass large sets of data to the API.
      • termbox-go - Termbox is a library for creating cross-platform text-based interfaces.
      • termdash - Go terminal dashboard based on **termbox-go** and inspired by [termui](https://github.com/gizak/termui).
      • termenv - Advanced ANSI style & color support for your terminal applications.
      • termui - Go terminal dashboard based on **termbox-go** and inspired by [blessed-contrib](https://github.com/yaronn/blessed-contrib).
      • uilive - Library for updating terminal output in real time.
      • uiprogress - Flexible library to render progress bars in terminal applications.
      • uitable - Library to improve readability in terminal apps using tabular data.
      • yacspin - Yet Another CLi Spinner package, for working with terminal spinners.
    • Standard CLI

      • hiboot cli - cli application framework with auto configuration and dependency injection.
      • go-andotp - A CLI program to encrypt/decrypt [andOTP](https://github.com/andOTP/andOTP) files. Can be used as a library as well.
      • survey - Build interactive and accessible prompts with full support for windows and posix terminals.
      • acmd - Simple, useful, and opinionated CLI package in Go.
      • argparse - Command line argument parser inspired by Python's argparse module.
      • argv - Go library to split command line string as arguments array using the bash syntax.
      • climax - Alternative CLI with "human face", in spirit of Go command.
      • clîr - A Simple and Clear CLI library. Dependency free.
      • cmd - Extends the standard `flag` package to support sub commands and more in idiomatic way.
      • cmdr - A POSIX/GNU style, getopt-like command-line UI Go library.
      • cobra - Commander for modern Go CLI interactions.
      • command-chain - A go library for configure and run command chains - such as pipelining in unix shells.
      • commandeer - Dev-friendly CLI apps: sets up flags, defaults, and usage based on struct fields and tags.
      • complete - Write bash completions in Go + Go command bash completion.
      • Dnote - A simple command line notebook with multi-device sync.
      • elvish - An expressive programming language and a versatile interactive shell.
      • env - Tag-based environment configuration for structs.
      • flag - Simple but powerful command line option parsing library for Go supporting subcommand.
      • flaggy - A robust and idiomatic flags package with excellent subcommand support.
      • flagvar - A collection of flag argument types for Go's standard `flag` package.
      • go-arg - Struct-based argument parsing in Go.
      • go-commander - Go library to simplify CLI workflow.
      • go-flags - go command line option parser.
      • go-getoptions - Go option parser inspired by the flexibility of Perl’s GetOpt::Long.
      • gocmd - Go library for building command line applications.
      • job - JOB, make your short-term command as a long-term job.
      • kingpin - Command line and flag parser supporting sub commands (superseded by `kong`; see below).
      • liner - Go readline-like library for command-line interfaces.
      • mcli - A minimal but very powerful cli library for Go.
      • mitchellh/cli - Go library for implementing command-line interfaces.
      • mkideal/cli - Feature-rich and easy to use command-line package based on golang struct tags.
      • mow.cli - Go library for building CLI applications with sophisticated flag and argument parsing and validation.
      • ops - Unikernel Builder/Orchestrator.
      • pflag - Drop-in replacement for Go's flag package, implementing POSIX/GNU-style --flags.
      • readline
      • sand - Simple API for creating interpreters and so much more.
      • sflags - Struct based flags generator for flag, urfave/cli, pflag, cobra, kingpin, and other libraries.
      • strumt - Library to create prompt chain.
      • subcmd - Another approach to parsing and running subcommands. Works alongside the standard `flag` package.
      • teris-io/cli - Simple and complete API for building command line interfaces in Go.
      • ts - Timestamp convert & compare tool.
      • ukautz/clif - Small command line interface framework.
      • urfave/cli - Simple, fast, and fun package for building command line apps in Go (formerly codegangsta/cli).
      • version - Collects and displays CLI version information in multiple formats along with upgrade notice.
      • wlog - Simple logging interface that supports cross-platform color and concurrency.
      • wmenu - Easy to use menu structure for cli applications that prompt users to make choices.
      • hashicorp/cli - Go library for implementing command-line interfaces.
      • carapace - Command argument completion generator for spf13/cobra.
      • carapace-spec - Define simple completions using a spec file.
      • console - loop application library for Cobra commands, with oh-my-posh prompts, and more.
      • go-andotp - A CLI program to encrypt/decrypt [andOTP](https://github.com/andOTP/andOTP) files. Can be used as a library as well.
      • survey - Build interactive and accessible prompts with full support for windows and posix terminals.
  • Database

    • Database Schema Migration

      • soda - Database migration, creation, ORM, etc... for MySQL, PostgreSQL, and SQLite.
      • soda - Database migration, creation, ORM, etc... for MySQL, PostgreSQL, and SQLite.
    • Database Tools

      • hasql - Library for accessing multi-host SQL database installations.
      • chproxy - HTTP proxy for ClickHouse database.
      • go-mysql - Go toolset to handle MySQL protocol and replication.
      • go-mysql-elasticsearch - Sync your MySQL data into Elasticsearch automatically.
      • octillery - Go package for sharding databases ( Supports every ORM or raw SQL ).
      • orchestrator - MySQL replication topology manager & visualizer.
      • vitess - vitess provides servers and tools which facilitate scaling of MySQL databases for large scale web services.
    • Databases Implemented in Go

      • Databunker - Personally identifiable information (PII) storage service built to comply with GDPR and CCPA.
      • dtf - A distributed transaction manager. Support XA, TCC, SAGA, Reliable Messages.
      • influxdb - Scalable datastore for metrics, events, and real-time analytics.
      • ledisdb - Ledisdb is a high performance NoSQL like Redis based on LevelDB.
      • lotusdb - Fast k/v database compatible with lsm and b+tree.
      • nutsdb - Nutsdb is a simple, fast, embeddable, persistent key/value store written in pure Go. It supports fully serializable transactions and many data structures such as list, set, sorted set.
      • rosedb - An embedded k-v database based on LSM+WAL, supports string, list, hash, set, zset.
    • SQL Query Builders

      • Dotsql - Go library that helps you keep sql files in one place and use them with ease.
      • sqlc - Generate type-safe code from SQL.
      • xo - Generate idiomatic Go code for databases based on existing schema definitions or custom queries supporting PostgreSQL, MySQL, SQLite, Oracle, and Microsoft SQL Server.
  • Database Drivers

    • NoSQL Database Drivers

      • gocql - Go language driver for Apache Cassandra.
      • go-pilosa - Go client library for Pilosa.
      • gocql - Go language driver for Apache Cassandra.
      • gorethink - Go language driver for RethinkDB.
      • rueidis - Fast Redis RESP3 client with auto pipelining and server-assisted client side caching.
    • Interfaces to Multiple Backends

      • cayley - Graph database with support for multiple backends.
  • Distributed Systems

      • dynamolock - DynamoDB-backed distributed locking implementation.
      • pglock - PostgreSQL-backed distributed locking implementation.
      • resgate - Realtime API Gateway for building REST, real time, and RPC APIs, where all clients are synchronized seamlessly.
      • go-micro - A distributed systems development framework.
      • go-zero - A web and rpc framework. It's born to ensure the stability of the busy sites with resilient design. Builtin goctl greatly improves the development productivity.
      • NATS - Lightweight, high performance messaging system for microservices, IoT, and cloud native systems.
  • Email

      • chasquid - SMTP server written in Go.
      • chasquid - SMTP server written in Go.
      • mailchain - Send encrypted emails to blockchain addresses written in Go.
  • File Handling

      • stl - Modules to read and write STL (stereolithography) files. Concurrent algorithm for reading.
  • Goroutines

      • oversight - Oversight is a complete implementation of the Erlang supervision trees.
      • artifex - Simple in-memory job queue for Golang using worker-based dispatching.
      • async-job - AsyncJob is an asynchronous queue job manager with light code, clear and speed.
      • gowl - Gowl is a process management and process monitoring tool at once. An infinite worker pool gives you the ability to control the pool and processes and monitor their status.
  • GUI

      • gio - Gio is a library for writing cross-platform immediate mode GUI-s in Go. Gio supports all the major platforms: Linux, macOS, Windows, Android, iOS, FreeBSD, OpenBSD and WebAssembly.
      • Goey - Cross platform UI toolkit aggregator for Windows / Linux / Mac. GTK, Cocoa, Windows API
      • Wails - Mac, Windows, Linux desktop apps with HTML UI using built-in OS HTML renderer.
      • app - Package to create apps with GO, HTML and CSS. Supports: MacOS, Windows in progress.
      • gio - Gio is a library for writing cross-platform immediate mode GUI-s in Go. Gio supports all the major platforms: Linux, macOS, Windows, Android, iOS, FreeBSD, OpenBSD and WebAssembly.
      • webview - Cross-platform webview window with simple two-way JavaScript bindings (Windows / macOS / Linux).
      • Spot - Reactive, cross-platform desktop GUI toolkit.
  • IoT (Internet of Things)

      • periph - Peripherals I/O to interface with low-level board facilities.
      • connectordb - Open-Source Platform for Quantified Self & IoT.
  • Logging

      • gone/log - Fast, extendable, full-featured, std-lib source compatible log library.
      • logmatic - Colorized logger for Golang with dynamic log level configuration.
  • Miscellaneous

    • Strings

      • bexp - Go implementation of Brace Expansion mechanism to generate arbitrary strings.
      • bexp - Go implementation of Brace Expansion mechanism to generate arbitrary strings.
      • bexp - Go implementation of Brace Expansion mechanism to generate arbitrary strings.
      • bexp - Go implementation of Brace Expansion mechanism to generate arbitrary strings.
    • Uncategorized

      • go-openapi - Collection of packages to parse and utilize open-api schemas.
      • VarHandler - Generate boilerplate http input and output handling.
      • gatus - Automated service health dashboard.
    • Dependency Injection

      • boot-go - Component-based development with dependency injection using reflections for Go developers.
      • di - A dependency injection container for go programming language.
  • Networking

    • Transliteration

      • mqttPaho - The Paho Go Client provides an MQTT client library for connection to MQTT brokers via TCP, TLS or WebSockets.
      • gosnmp - Native Go library for performing SNMP actions.
      • grab - Go package for managing file downloads.
      • HTTPLab - HTTPLabs let you inspect HTTP requests and forge responses.
      • mqttPaho - The Paho Go Client provides an MQTT client library for connection to MQTT brokers via TCP, TLS or WebSockets.
      • NFF-Go - Framework for rapid development of performant network functions for cloud and bare-metal (former YANFF).
      • quic-go - An implementation of the QUIC protocol in pure Go.
      • stun - Go implementation of RFC 5389 STUN protocol.
      • webrtc - A pure Go implementation of the WebRTC API.
    • HTTP Clients

      • heimdall - An enhanced http client with retry and hystrix capabilities.
  • Package Management

    • HTTP Clients

      • go modules - Modules are the unit of source code interchange and versioning. The go command has direct support for working with modules, including recording and resolving dependencies on other modules.
      • vgo - Versioned Go.
      • go modules - Modules are the unit of source code interchange and versioning. The go command has direct support for working with modules, including recording and resolving dependencies on other modules.
      • goop - Simple dependency manager for Go (golang), inspired by Bundler.
      • nut - Vendor Go dependencies.
  • Performance

    • HTTP Clients

      • pixie - No instrumentation tracing for Golang applications via eBPF.
      • pixie - No instrumentation tracing for Golang applications via eBPF.
  • Security

    • HTTP Clients

      • autocert - Auto provision Let's Encrypt certificates and start a TLS server.
      • themis - high-level cryptographic library for solving typical data security tasks (secure data storage, secure messaging, zero-knowledge proof authentication), available for 14 languages, best fit for multi-platform apps.
      • acmetool - ACME (Let's Encrypt) client tool with automatic renewal.
      • autocert - Auto provision Let's Encrypt certificates and start a TLS server.
      • go-password-validator - Password validator based on raw cryptographic entropy values.
      • acopw-go - Small cryptographically secure password generator package for Go.
      • autocert - Auto provision Let's Encrypt certificates and start a TLS server.
  • Server Applications

    • HTTP Clients

      • consul - Consul is a tool for service discovery, monitoring and configuration.
      • nsq - A realtime distributed messaging platform.
      • RoadRunner - High-performance PHP application server, load-balancer and process manager.
      • Easegress - A cloud native high availability/performance traffic orchestration system with observability and extensibility.
      • Flagr - Flagr is an open-source feature flagging and A/B testing service.
      • flipt - A self contained feature flag solution written in Go and Vue.js
      • RoadRunner - High-performance PHP application server, load-balancer and process manager.
      • Trickster - HTTP reverse proxy cache and time series accelerator.
  • Testing

    • HTTP Clients

      • apitest - Simple and extensible behavioural testing library for REST based services or HTTP handlers that supports mocking external http calls and rendering of sequence diagrams.
      • testmd - Convert markdown snippets into testable go code.
      • apitest - Simple and extensible behavioural testing library for REST based services or HTTP handlers that supports mocking external http calls and rendering of sequence diagrams.
      • badio - Extensions to Go's `testing/iotest` package.
      • commander - Tool for testing cli applications on windows, linux and osx.
      • frisby - REST API testing framework.
      • go-snaps - Jest-like snapshot testing in Golang.
      • Gont - Go network testing toolkit for testing building complex network topologies using Linux namespaces.
      • GoSpec - BDD-style testing framework for the Go programming language.
      • restit - Go micro framework to help writing RESTful API integration test.
      • testmd - Convert markdown snippets into testable go code.
      • chromedp - a way to drive/test Chrome, Safari, Edge, Android Webviews, and other browsers supporting the Chrome Debugging Protocol.
      • playwright-go - browser automation library to control Chromium, Firefox and WebKit with a single API.
    • Testing Frameworks

      • gocheck - More advanced testing framework alternative to gotest.
  • Text Processing

    • Formatters

      • bytes - Formats and parses numeric byte values (10K, 2M, 3G, etc.).
    • Markup Languages

      • github_flavored_markdown - GitHub Flavored Markdown renderer (using blackfriday) with fenced code block highlighting, clickable header anchor links.
      • github_flavored_markdown - GitHub Flavored Markdown renderer (using blackfriday) with fenced code block highlighting, clickable header anchor links.
      • go-output-format - Output go structures into multiple formats (YAML/JSON/etc) in your command line app.
    • Parsers/Encoders/Decoders

      • did - DID (Decentralized Identifiers) Parser and Stringer in Go.
      • encdec - Package provides a generic interface to encoders and decoders.
      • parseargs-go - string argument parser that understands quotes and backslashes.
      • xj2go - Convert xml or json to go struct.
    • Scrapers

      • colly - Fast and Elegant Scraping Framework for Gophers.
  • Web Frameworks

    • Utility/Miscellaneous

      • aah - Scalable, performant, rapid development Web framework for Go.
      • Buffalo - Bringing the productivity of Rails to Go!
      • aah - Scalable, performant, rapid development Web framework for Go.
      • Banjo - Very simple and fast web framework for Go.
      • Buffalo - Bringing the productivity of Rails to Go!
      • Fireball - More "natural" feeling web framework.
      • Gearbox - A web framework written in Go with a focus on high performance and memory optimization.
    • Middlewares

      • go-fault - Fault injection middleware for Go.
  • 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.
      • goimports - Tool to fix (add, remove) your Go imports automatically.
  • Editor Plugins

  • Go Generate Tools

    • Routers

      • TOML-to-Go - Translates TOML into a Go type in the browser instantly.
      • TOML-to-Go - Translates TOML into a Go type in the browser instantly.
      • sqlgen - Generate gorm, xorm, sqlx, bun, sql code from SQL file or DSN.
  • Go Tools

    • Routers

      • gotemplate.io - Online tool to preview `text/template` templates live.
      • OctoLinker - Navigate through go files efficiently with the OctoLinker browser extension for GitHub.
      • go-callvis - Visualize call graph of your Go program using dot format.
      • OctoLinker - Navigate through go files efficiently with the OctoLinker browser extension for GitHub.
  • Software Packages

    • DevOps Tools

      • Docker - Open platform for distributed applications for developers and sysadmins.
      • Gogs - A Self Hosted Git Service in the Go Programming Language.
      • traefik - Reverse proxy and load balancer with support for multiple backends.
      • Wide - Web-based IDE for Teams using Golang.
      • aptly - aptly is a Debian repository management tool.
      • govvv - “go build” wrapper to easily add version information into Go binaries.
      • ko - Command line tool for building and deploying Go applications on Kubernetes
      • Packer - Packer is a tool for creating identical machine images for multiple platforms from a single source configuration.
      • traefik - Reverse proxy and load balancer with support for multiple backends.
    • Other Software

      • Better Go Playground - Go playground with syntax highlight, code completion and other features.
      • goblin - Golang binaries in a curl, built by goblins.
      • GoLand - Full featured cross-platform Go IDE.
      • hugo - Fast and Modern Static Website Engine.
      • Juju - Cloud-agnostic service deployment and orchestration - supports EC2, Azure, Openstack, MAAS and more.
      • limetext - Lime Text is a powerful and elegant text editor primarily developed in Go that aims to be a Free and open-source software successor to Sublime Text.
      • syncthing - Open, decentralized file synchronization tool and protocol.
      • tsuru - Extensible and open source Platform as a Service software.
      • Better Go Playground - Go playground with syntax highlight, code completion and other features.
      • borg - Terminal based search engine for bash snippets.
      • goblin - Golang binaries in a curl, built by goblins.
      • GoLand - Full featured cross-platform Go IDE.
      • Gor - Http traffic replication tool, for replaying traffic from production to stage/dev environments in real-time.
      • Juju - Cloud-agnostic service deployment and orchestration - supports EC2, Azure, Openstack, MAAS and more.
      • limetext - Lime Text is a powerful and elegant text editor primarily developed in Go that aims to be a Free and open-source software successor to Sublime Text.
      • Seaweed File System - Fast, Simple and Scalable Distributed File System with O(1) disk seek.
      • vFlow - High-performance, scalable and reliable IPFIX, sFlow and Netflow collector.
  • Conferences

  • E-Books

  • Style Guides

  • Social Media

  • Websites

  • Machine Learning

      • go-fann - Go bindings for Fast Artificial Neural Networks(FANN) library.
      • gorse - An offline recommender system backend based on collaborative filtering written in Go.
  • Messaging

      • Benthos - A message streaming bridge between a range of protocols.
      • NATS Go Client - Lightweight and high performance publish-subscribe and distributed queueing messaging system - this is the Go library.
      • pubsub - Simple pubsub package for go.
      • sarama - Go library for Apache Kafka.
  • Microsoft Office

    • Microsoft Excel

      • excelize - Golang library for reading and writing Microsoft Excel™ (XLSX) files.
  • Natural Language Processing

    • Morphological Analyzers

      • porter2 - Really fast Porter 2 stemmer.
  • ORM

    • HTTP Clients

      • ent - An entity framework for Go. Simple, yet powerful ORM for modeling and querying data.
      • Prisma - Prisma Client Go, Typesafe database access for Go.
  • Query Language

    • HTTP Clients

      • graphql - GraphQL server with a focus on ease of use.
      • straf - Easily Convert Golang structs to GraphQL objects.
  • Serialization

    • HTTP Clients

      • asn1 - Asn.1 BER and DER encoding library for golang.
      • bel - Generate TypeScript interfaces from Go structs/interfaces. Useful for JSON RPC.
      • structomap - Library to easily and dynamically generate maps from static structures.
  • Third-party APIs

    • Utility/Miscellaneous

      • clarifai - Go client library for interfacing with the Clarifai API.
      • gcm - Go library for Google Cloud Messaging.
      • githubql - Go library for accessing the GitHub GraphQL API v4.
      • google - Auto-generated Google APIs for Go.
      • google-cloud - Google Cloud APIs Go Client Library.
      • google-email-audit-api - Go client library for [Google G Suite Email Audit API](https://developers.google.com/admin-sdk/email-audit/).
      • libgoffi - Library adapter toolbox for native [libffi](https://sourceware.org/libffi/) integration
      • paypal - Wrapper for PayPal payment API.
      • textbelt - Go client for the textbelt.com txt messaging API.
      • translate - Go online translation package.
  • Utilities

    • Utility/Miscellaneous

      • cmd - Library for executing shell commands on osx, windows and linux.
      • goreporter - Golang tool that does static analysis, unit testing, code review and generate code quality report.
      • hub - wrap git commands with additional functionality to interact with github from the terminal.
      • lets-go - Go module that provides common utilities for Cloud Native REST API development. Also contains AWS Specific utilities.
      • mergo - Helper to merge structs and maps in Golang. Useful for configuration default values, avoiding messy if-statements.
      • usql - usql is a universal command-line interface for SQL databases.
  • UUID

    • Utility/Miscellaneous

      • goid - Generate and Parse RFC4122 compliant V4 UUIDs.
      • uniq - No hassle safe, fast unique identifiers with commands.
      • uniq - No hassle safe, fast unique identifiers with commands.
  • Video

    • Utility/Miscellaneous

      • gortsplib - Pure Go RTSP server and client library.
  • Audio and Music

    • id3v2 - ID3 decoding and encoding library for Go.
    • Oto - A low-level library to play sound on multiple platforms.
    • 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.
    • Oto - A low-level library to play sound on multiple platforms.
  • Authentication and OAuth

    • casbin - Authorization library that supports access control models like ACL, RBAC, and ABAC.
    • 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.
    • loginsrv - JWT login microservice with pluggable backends such as OAuth2 (Github), htpasswd, osiam.
    • otpgen - Library to generate TOTP/HOTP codes.
    • scope - Easily Manage OAuth2 Scopes In Go.
    • 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).
    • permissions2 - Library for keeping track of users, login states, and permissions. Uses secure cookies and bcrypt.
    • 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.
    • sessionup - Simple, yet effective HTTP session management and identification package.
    • sjwt - Simple jwt generator and parser.
    • 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.
    • 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.
    • goiabada - An open-source authentication and authorization server supporting OAuth2 and OpenID Connect.
  • Configuration

    • Standard CLI

      • env - A lightweight package for loading environment variables into structs.
      • goConfig - Parses a struct as input and populates the fields of this struct with parameters from command line, environment variables and configuration file.
      • gonfig - Tag-based configuration parser which loads values from different providers into typesafe struct.
      • aconfig - Simple, useful and opinionated config loader.
      • bcl - BCL is a configuration language similar to HCL.
      • cleanenv - Minimalistic configuration reader (from files, ENV, and wherever you want).
      • config - Cloud native application configuration. Bind ENV to structs in only two lines.
      • config - configure your app using file, environment variables, or flags in two lines of code
      • configuration - Library for initializing configuration structs from env variables, files, flags and 'default' tag.
      • configure - Provides configuration through multiple sources, including JSON, flags and environment variables.
      • configuro - opinionated configuration loading & validation framework from ENV and Files focused towards 12-Factor compliant applications.
      • confiq - Structured data format to config struct decoder library for Go - supporting multiple data formats
      • confita - Load configuration in cascade from multiple backends into a struct.
      • conflate - Library/tool to merge multiple JSON/YAML/TOML files from arbitrary URLs, validation against a JSON schema, and application of default values defined in the schema.
      • env - Parse environment variables to Go structs (with defaults).
      • env - An environment utility package with support for unmarshaling into structs
      • envconfig - Read your configuration from environment variables.
      • envh - Helpers to manage environment variables.
      • fig - Tiny library for reading configuration from a file and from environment variables (with validation & defaults).
      • genv - Read environment variables easily with dotenv support.
      • go-array - A Go package that read or set data from map, slice or json.
      • go-aws-ssm - Go package that fetches parameters from AWS System Manager - Parameter Store.
      • go-cfg - The library provides a unified way to read configuration data into a structure from various sources, such as env, flags, and configuration files (.json, .yaml, .toml, .env).
      • go-conf - Simple library for application configuration based on annotated structs. It supports reading the configuration from environment variables, config files and command line parameters.
      • go-ini - A Go package that marshals and unmarshals INI-files.
      • go-ssm-config - Go utility for loading configuration parameters from AWS SSM (Parameter Store).
      • go-up - A simple configuration library with recursive placeholders resolution and no magic.
      • GoCfg - Config manager with Struct Tags based contracts, custom value providers, parsers, and documentation generation. Customizable yet simple.
      • goConfig - Parses a struct as input and populates the fields of this struct with parameters from command line, environment variables and configuration file.
      • godotenv - Go port of Ruby's dotenv library (Loads environment variables from `.env`).
      • gofigure - Go application configuration made easy.
      • GoLobby/Config - GoLobby Config is a lightweight yet powerful configuration manager for the Go programming language.
      • gookit/config - application config manage(load,get,set). support JSON, YAML, TOML, INI, HCL. multi file load, data override merge.
      • harvester - Harvester, an easy to use static and dynamic configuration package supporting seeding, env vars and Consul integration.
      • hjson - Human JSON, a configuration file format for humans. Relaxed syntax, fewer mistakes, more comments.
      • hocon - Configuration library for working with the HOCON(a human-friendly JSON superset) format, supports features like environment variables, referencing other values, comments and multiple files.
      • ingo - Flags persisted in an ini-like config file.
      • ini - Go package to read and write INI files.
      • ini - INI Parser & Write Library, Unmarshal to Struct, Marshal to Json, Write File, watch file.
      • joshbetz/config - Small configuration library for Go that parses environment variables, JSON files, and reloads automatically on SIGHUP.
      • kelseyhightower/envconfig - Go library for managing configuration data from environment variables.
      • koanf - Light weight, extensible library for reading config in Go applications. Built in support for JSON, TOML, YAML, env, command line.
      • konf - The simplest API for reading/watching config from file, env, flag and clouds (e.g. AWS, Azure, GCP).
      • konfig - Composable, observable and performant config handling for Go for the distributed processing era.
      • kong - Command-line parser with support for arbitrarily complex command-line structures and additional sources of configuration such as YAML, JSON, TOML, etc (successor to `kingpin`).
      • mini - Golang package for parsing ini-style configuration files.
      • nasermirzaei89/env - Simple useful package for read environment variables.
      • nfigure - Per-library struct-tag based configuration from command lines (Posix & Go-style); environment, JSON, YAML
      • onion - Layer based configuration for Go, Supports JSON, TOML, YAML, properties, etcd, env, and encryption using PGP.
      • piper - Viper wrapper with config inheritance and key generation.
      • sonic - A blazingly fast JSON serializing & deserializing library.
      • store - Lightweight configuration manager for Go.
      • swap - Instantiate/configure structs recursively, based on build environment. (YAML, TOML, JSON and env).
      • typenv - Minimalistic, zero dependency, typed environment variables library.
      • uConfig - Lightweight, zero-dependency, and extendable configuration management.
      • viper - Go configuration with fangs.
      • xdg - Go implementation of the [XDG Base Directory Specification](https://specifications.freedesktop.org/basedir-spec/latest/) and [XDG user directories](https://wiki.archlinux.org/index.php/XDG_user_directories).
      • xdg - Cross platform package that follows the [XDG Standard](https://specifications.freedesktop.org/basedir-spec/latest/).
      • yamagiconf - The "safe subset" of YAML for Go configs.
      • gone/jconf - Modular JSON configuration. Keep your config structs along with the code they configure and delegate parsing to submodules without sacrificing full config serialization.
      • env - A lightweight package for loading environment variables into structs.
      • gonfig - Tag-based configuration parser which loads values from different providers into typesafe struct.
  • Continuous Integration

    • Standard CLI

      • drone - Drone is a Continuous Integration platform built on Docker, written in Go.
      • abstruse - Abstruse is a distributed CI platform.
      • CDS - Enterprise-Grade CI/CD and DevOps Automation Open Source Platform.
      • dot - A minimal, local first continuous integration system that uses Docker to run jobs concurrently in stages.
      • go-beautiful-html-coverage - A GitHub Action to track code coverage in your pull requests, with a beautiful HTML preview, for free.
      • go-fuzz-action - Use Go 1.18's built-in fuzz testing in GitHub Actions.
      • go-semver-release - Automate the semantic versioning of Git repositories.
      • go-test-coverage - Tool and GitHub action which reports issues when test coverage is below set threshold.
      • gomason - Test, Build, Sign, and Publish your go binaries from a clean workspace.
      • gotestfmt - go test output for humans.
      • goveralls - Go integration for Coveralls.io continuous code coverage tracking system.
      • muffet - Fast website link checker in Go, see [alternatives](https://github.com/lycheeverse/lychee#features).
      • overalls - Multi-Package go project coverprofile for tools like goveralls.
      • roveralls - Recursive coverage testing tool.
      • woodpecker - Woodpecker is a community fork of the Drone CI system.
      • drone - Drone is a Continuous Integration platform built on Docker, written in Go.
      • Bencher - A suite of continuous benchmarking tools designed to catch performance regressions in CI.
  • Data Structures and Algorithms

    • Bloom and Cuckoo Filters

      • bloom - Bloom filters implemented in Go.
      • ring - Go implementation of a high performance, thread safe bloom filter.
    • Miscellaneous Data Structures and Algorithms

      • go-rquad - Region quadtrees with efficient point location and neighbour finding.
      • gota - Implementation of dataframes, series, and data wrangling methods for Go.
    • Trees

      • hashsplit - Split byte streams into chunks, and arrange chunks into trees, with boundaries determined by content, not position.
  • Embeddable Scripting Languages

      • expr - Expression evaluation engine for Go: fast, non-Turing complete, dynamic typing, static typing.
  • Error Handling

      • Falcon - A Simple Yet Highly Powerful Package For Error Handling.
  • Generators

      • go-linq - .NET LINQ-like query methods for Go.
  • Hardware

      • goroslib - Robot Operating System (ROS) library for Go.
  • Job Scheduler

      • Dagu - No-code workflow executor. it executes DAGs defined in a simple YAML format.
  • Benchmarks

    • Other Software

      • gocostmodel - Benchmarks of common basic operations for the Go language.
  • 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 - A blockchain framework implemented 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.
  • CSS Preprocessors

    • Standard CLI

      • gcss - Pure Go CSS Preprocessor.
      • go-libsass - Go wrapper to the 100% Sass compatible libsass project.
  • Artificial Intelligence

    • langchaingo - LangChainGo is a framework for developing applications powered by language models.
    • LocalAI - Open Source OpenAI alternative, self-host AI models.
    • OllamaFarm - Manage, load-balance, and failover packs of Ollamas
    • fun - The simplest but powerful way to use large language models (LLMs) in Go.
    • 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.
  • Template Engines

    • HTTP Clients

      • gomponents - HTML 5 components in pure Go, that look something like this: `func(name string) g.Node { return Div(Class("headline"), g.Textf("Hi %v!", name)) }`.
  • 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 - Proto Actor - Ultra fast distributed actors for Go, C# and Java/Kotlin.
  • Financial

      • swift - Offline validity check of IBAN (International Bank Account Number) and retrieval of BIC (for some countries).
  • Data Integration Frameworks

    • Standard CLI

      • Benthos - A message streaming bridge between a range of protocols.