Go Libraries

Go Libraries #

AI & ML #

ollama
Get up and running with Llama 2 and other large language models locally
jmorganca/ollama

lingua-go
The most accurate natural language detection library for Go, suitable for long and short text alike. It tells you which language some text is written in.
pemistahl/lingua-go

Cache #

go-generic-cache
A key:value store/cache library written in Go generics. LRU, LFU, FIFO, MRU, Clock support.
Code-Hex/go-generics-cache

bigcache
Efficient cache for gigabytes of data written in Go.
allegro/bigcache

clfu
Implementation of Constant Time LFU (least frequently used) cache in Go with concurrency safety.
Narasimha1997/clfu

Compiler & Runtime #

gocompiler
The Go compiler as a package
bir3/gocompiler

wazero
wazero: the zero dependency WebAssembly runtime for Go developers
tetratelabs/wazero

ebitengine/purego
A library for calling C functions from Go without Cgo.
ebitengine/purego

Data structure #

GoDS
GoDS (Go Data Structures) - Sets, Lists, Stacks, Maps, Trees, Queues, and much more
emirpasic/gods

go-merkletree
Go Merkle Tree. High performance, Supporting parallel run, OpenZeppelin sorting pairs.
txaty/go-merkletree

Database #

ramsql
In-memory SQL engine in Go sql/driver for testing purpose
proullon/ramsql

rqlite
The lightweight, distributed relational database built on SQLite
https://rqlite.io
rqlite/rqlite

pure go sqlite
Package sqlite is a CGo-free port of SQLite/SQLite3. SQLite is an in-process implementation of a self-contained, serverless, zero-configuration, transactional SQL database engine.
cznic/sqlite

psql-wire
PostgreSQL server wire protocol. Build your own server and start serving connections.
jeroenrinzema/psql-wire

slashbase
Modern database IDE for your dev & data workflows. Supports MySQL, PostgreSQL & MongoDB.
slashbaseide/slashbase

pocketbase
Open Source realtime backend in 1 file
pocketbase/pocketbase

rosedb
Lightweight, fast and reliable key/value storage engine based on Bitcask.
rosedblabs/rosedb

milvus
A cloud-native vector database, storage for next generation AI applications. Milvus is an open-source vector database built to power embedding similarity search and AI applications.
milvus-io/milvus

column
High-performance, columnar, in-memory store with bitmap indexing in Go
kelindar/column

LinDB
Distributed time-series db https://lindb.io

m3db
M3 monorepo - Distributed TSDB, Aggregator and Query Engine, Prometheus Sidecar, Graphite Compatible, Metrics Platform
m3db/m3

Datetime #

carbon
A simple, semantic and developer-friendly golang package for datetime.
golang-module/carbon

Event & Message driven #

watermil
Go library for building event-driven applications. https://watermill.io

RxGo
Reactive Extensions for the Go language.
reactivex/rxgo

Interpreter & Evaluation #

expr
Expression language and expression evaluation for Go
antonmedv/expr

Game #

cardrank
Go types, funcs, and utilities for working with cards, decks, and evaluating poker hands (Holdem, Omaha, Stud, more)
cardrank/cardrank

GUI #

go-app
A package to build progressive web apps with Go programming language and WebAssembly.
maxence-charriere/go-app

gio ui
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. https://gioui.org

Kafka #

kafka-go

Kafka library in Go
segmentio/kafka-go

  • sarama, which is by far the most popular but is quite difficult to work with. It is poorly documented, the API exposes low level concepts of the Kafka protocol, and it doesn’t support recent Go features like contexts. It also passes all values as pointers which causes large numbers of dynamic memory allocations, more frequent garbage collections, and higher memory usage.
  • confluent-kafka-go is a cgo based wrapper around librdkafka, which means it introduces a dependency to a C library on all Go code that uses the package. It has much better documentation than sarama but still lacks support for Go contexts.
  • goka is a more recent Kafka client for Go which focuses on a specific usage pattern. It provides abstractions for using Kafka as a message passing bus between services rather than an ordered log of events, but this is not the typical use case of Kafka for us at Segment. The package also depends on sarama for all interactions with Kafka.

sarama
Sarama is a Go library for Apache Kafka.
IBM/sarama

confluent-kafka-go
Confluent’s Apache Kafka Golang client
confluentinc/confluent-kafka-go

goka
Goka is a compact yet powerful distributed stream processing library for Apache Kafka written in Go.
lovoo/goka

Log #

tint
🌈 slog.Handler that writes tinted (colorized) logs
lmittmann/tint

log
A minimal, colorful Go logging library 🪵
charmbracelet/log

tail
Go package for reading from continously updated files (tail -f)
hpcloud/tail

zincsearch
ZincSearch . A lightweight alternative to elasticsearch that requires minimal resources, written in Go.
zincsearch/zincsearch

macOS #

gon
Sign, notarize, and package macOS CLI tools and applications written in any language. Available as both a CLI and a Go library.
mitchellh/gon

Media #

go2rtc
Ultimate camera streaming application with support RTSP, RTMP, HTTP-FLV, WebRTC, MSE, HLS, MP4, MJPEG, HomeKit, FFmpeg, etc.
AlexxIT/go2rtc

Livekit (WebRTC)
End-to-end stack for WebRTC. SFU media server and SDKs.
livekit/livekit

Monitoring #

goalive
A simple tool to monitor health endpoints of your services
Stef2k16/goalive

Network #

quic-go
A QUIC implementation in pure go
quic-go/quic-go

ws
Tiny WebSocket library for Go.
gobwas/ws

torrent
Full-featured BitTorrent client package and utilities
anacrolix/torrent

loxilb
eBPF based cloud-native load-balancer. Powering K8s|Edge|5G|IoT|XaaS Apps.
loxilb-io/loxilb

natiu-mqtt
A dead-simple, extensible MQTT implementation well suited for embedded systems.
soypat/natiu-mqtt

comqtt
A lightweight, high-performance go mqtt server(v3.0|v3.1.1|v5.0) supporting distributed cluster
wind-c/comqtt

easytcp
✨ 🚀 EasyTCP is a light-weight TCP framework written in Go (Golang), built with message router. EasyTCP helps you build a TCP server easily fast and less painful.
DarthPestilane/easytcp

OpenStreetMap #

openmaptiles
OpenMapTiles Vector Tile Schema Implementation
openmaptiles/openmaptiles

tegola-omt
OpenMapTiles import procedure and configuration for the Tegola tileserver.
tile-fund/tegola-omt

Security #

life4/enc
🔑🔒 A modern and friendly CLI alternative to GnuPG: generate and download keys, encrypt, decrypt, and sign text and files, and more.
life4/enc

go-nanoid
Nano ID for Go
jaevor/go-nanoid

Terminal #

console
Closed-loop application library for Cobra commands (powerful, ready-to-run and easy to use)
reeflective/console

pterm
PTerm is a modern Go module to easily beautify console output. Featuring charts, progressbars, tables, trees, text input, select menus and much more 🚀 It’s completely configurable and 100% cross-platform compatible.
pterm/pterm

command line interactive libraries

go-pretty
Table-writer and more in golang!
jedib0t/go-pretty

artty
Art for your TTY.
mjwhitta/artty

banner

Colorful Banners

  • figlet : displays the banners
  • lolcat : colorizes the banners

Utilities #

go-git
A highly extensible Git implementation in pure Go.
go-git/go-git

duf
Disk Usage/Free Utility - a better ‘df’ alternative
muesli/duf

zellij
A terminal workspace with batteries included https://zellij.dev

Visualization #

D2
D2 is a modern diagram scripting language that turns text to diagrams
terrastruct/d2

go-echarts
🎨 The adorable charts library for Golang
go-echarts/go-echarts

uPlot
📈 A small, fast chart for time series, lines, areas, ohlc & bars
leeoniya/uPlot