Awesome Go

Build Status Awesome Slack Widget

A curated list of awesome Go frameworks, libraries and software. Inspired by awesome-python36k 7k .

Contributing

Please take a quick gander at the contribution guidelines first. Thanks to all contributors; you rock!

If you see a package or project here that is no longer maintained or is not a good fit, please submit a pull request to improve this file. Thank you!

Contents

Audio and Music

Libraries for manipulating audio.

  • flac30 2 - Native Go FLAC decoder.
  • flac49 14 - Native Go FLAC decoder.
  • gaad27 4 - Native Go AAC bitstream parser.
  • go-sox25 4 - libsox bindings for go.
  • go_mediainfo13 2 - libmediainfo bindings for go.
  • gosamplerate - libsamplerate bindings for go.
  • id3v248 11 - Fast and stable ID3 parsing and writing library for Go.
  • malgo13 1 - Mini audio library.
  • mix - Sequence-based Go-native audio mixer for music apps.
  • mp355 9 - Native Go MP3 decoder.
  • music-theory135 18 - Music theory models in Go.
  • PortAudio - Go bindings for the PortAudio audio I/O library.
  • portmidi44 7 - Go bindings for PortMidi.
  • taglib26 9 - Go bindings for taglib.
  • vorbis2 1 - "Native" Go Vorbis decoder (uses CGO, but has no dependencies).
  • waveform57 3 - Go package capable of generating waveform images from audio streams.

Authentication and OAuth

Libraries for implementing authentications schemes.

  • authboss48 3 - 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, and start building your app without having to build an authentication system each time.
  • casbin689 61 - Authorization library that supports access control models like ACL, RBAC, ABAC.
  • cookiestxt - provides parser of cookies.txt file format.
  • Go-AWS-Auth67 10 - AWS (Amazon Web Services) request signing library.
  • go-jose783 105 - Fairly complete implementation of the JOSE working group's JSON Web Token, JSON Web Signatures, and JSON Web Encryption specs.
  • go-oauth2-server594 85 - Standalone, specification-compliant, OAuth2 server written in Golang.
  • gologin813 49 - chainable handlers for login with OAuth1 and OAuth2 authentication providers.
  • gorbac575 114 - provides a lightweight role-based access control (RBAC) implementation in Golang.
  • goth1k 209 - provides a simple, clean, and idiomatic way to use OAuth and OAuth2. Handles multiple providers out of the box.
  • httpauth127 21 - HTTP Authentication middleware.
  • jwt17 7 - Clean and easy to use implementation of JSON Web Tokens (JWT).
  • jwt-auth60 5 - JWT middleware for Golang http servers with many configuration options.
  • jwt-go2k 319 - Golang implementation of JSON Web Tokens (JWT).
  • loginsrv646 59 - JWT login microservice with plugable backends such as OAuth2 (Github), htpasswd, osiam.
  • oauth2205 40 - Successor of goauth2. Generic OAuth 2.0 package that comes with JWT, Google APIs, Compute Engine and App Engine support.
  • osin399 64 - Golang OAuth2 server library.
  • permissions2257 18 - Library for keeping track of users, login states and permissions. Uses secure cookies and bcrypt.
  • securecookie - Efficient secure cookie encoding/decoding.
  • session25 3 - Go session management for web servers (including support for Google App Engine - GAE).
  • sessiongate-go - Go session management using the SessionGate Redis module.
  • sessions - Dead simple, highly performant, highly customizable sessions service for go http servers.
  • yubigo19 3 - Yubikey client package that provides a simple API to integrate the Yubico Yubikey into a go application.

Command Line

Standard CLI

Libraries for building standard or basic Command Line applications.

  • argparse7 3 - 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.
  • cli277 22 - Feature-rich and easy to use command-line package based on golang struct tags.
  • cli - Simple and complete API for building command line interfaces in Go.
  • cli-init490 53 - The easy way to start building Golang command line applications.
  • climax130 9 - Alternative CLI with "human face", in spirit of Go command.
  • cobra1k 103 - Commander for modern Go CLI interactions.
  • complete266 10 - Write bash completions in Go + Go command bash completion.
  • docopt.go860 74 - Command-line arguments parser that will make you smile.
  • drive4k 387 - Google Drive client for the commandline.
  • env - Tag-based environment configuration for structs.
  • flag134 2 - Simple but powerful command line option parsing library for Go supporting subcommand.
  • go-arg428 27 - Struct-based argument parsing in Go.
  • go-flags826 114 - go command line option parser.
  • kingpin1k 124 - Command line and flag parser supporting sub commands.
  • liner402 75 - Go readline-like library for command-line interfaces.
  • mitchellh/cli708 68 - Go library for implementing command-line interfaces.
  • mow.cli494 39 - Go library for building CLI applications with sophisticated flag and argument parsing and validation.
  • pflag21 10 - Drop-in replacement for Go's flag package, implementing POSIX/GNU-style --flags.
  • readline849 82 - Pure golang implementation that provides most features in GNU-Readline under MIT license.
  • sflags41 4 - Struct based flags generator for flag, urfave/cli, pflag, cobra, kingpin and other libraries.
  • strumt - Library to create prompt chain.
  • ukautz/clif82 9 - Small command line interface framework.
  • urfave/cli3k 284 - Simple, fast, and fun package for building command line apps in Go (formerly codegangsta/cli).
  • wlog18 1 - Simple logging interface that supports cross-platform color and concurrency.
  • wmenu36 6 - Easy to use menu structure for cli applications that prompts users to make choices.

Advanced Console UIs

Libraries for building Console Applications and Console User Interfaces.

  • aurora226 6 - ANSI terminal colors that supports fmt.Printf/Sprintf.
  • chalk213 15 - Intuitive package for prettifying terminal/console output.
  • color2k 176 - Versatile package for colored terminal output.
  • colourize9 4 - Go library for ANSI colour text in terminals.
  • go-ataman - Go library for rendering ANSI colored text templates in terminals.
  • go-colorable201 40 - Colorable writer for windows.
  • go-colortext85 6 - Go library for color output in terminals.
  • go-isatty147 28 - isatty for golang.
  • gocui2k 134 - Minimalist Go library aimed at creating Console User Interfaces.
  • gommon/color197 39 - Style terminal text.
  • mpb133 14 - Multi progress bar for terminal applications.
  • progressbar111 5 - Basic thread-safe progress bar that works in every OS.
  • termbox-go566 73 - Termbox is a library for creating cross-platform text-based interfaces.
  • termtables90 16 - Go port of the Ruby library terminal-tables884 114 for simple ASCII table generation as well as providing markdown and HTML output.
  • termui6k 384 - Go terminal dashboard based on termbox-go and inspired by blessed-contrib10k 473 .
  • tui-go1k 64 - Go UI library for building rich terminal applications.
  • uilive - Library for updating terminal output in realtime.
  • uiprogress983 47 - Flexible library to render progress bars in terminal applications.
  • uitable395 15 - Library to improve readability in terminal apps using tabular data.

Configuration

Libraries for configuration parsing.

  • config - JSON or YAML configuration wrapper with environment variables and flags parsing.
  • configure - Provides configuration through multiple sources, including JSON, flags and environment variables.
  • env336 37 - Parse environment variables to Go structs (with defaults).
  • envcfg83 6 - Un-marshaling environment variables to Go structs.
  • envconf - Configuration from environment.
  • envconfig114 13 - Read your configuration from environment variables.
  • envh85 1 - Helpers to manage environment variables.
  • gcfg65 20 - read INI-style configuration files into Go structs; supports user-defined types and subsections.
  • goConfig33 6 - Parses a struct as input and populates the fields of this struct with parameters from command line, environment variables and configuration file.
  • godotenv636 50 - Go port of Ruby's dotenv library (Loads environment variables from .env).
  • gofigure2 0 - Go application configuration made easy.
  • gone/jconf3 3 - Modular JSON configuration. Keep you config structs along with the code they configure and delegate parsing to submodules without sacrificing full config serialization.
  • hjson45 6 - Human JSON, a configuration file format for humans. Relaxed syntax, fewer mistakes, more comments.
  • ingo14 5 - Flags persisted in an ini-like config file.
  • ini730 164 - Go package to read and write INI files.
  • joshbetz/config - Small configuration library for Go that parses environment variables, JSON files, and reloads automatically on SIGHUP.
  • mini10 3 - Golang package for parsing ini-style configuration files.
  • store221 10 - Lightweight configuration manager for Go.
  • viper6k 753 - Go configuration with fangs.
  • xdg - Cross platform package that follows the XDG Standard.

Continuous Integration

Tools for help with continuous integration.

  • drone14k 2k - Drone is a Continuous Integration platform built on Docker, written in Go.
  • goveralls391 72 - Go integration for Coveralls.io continuous code coverage tracking system.
  • overalls3 1 - Multi-Package go project coverprofile for tools like goveralls.
  • roveralls - Recursive coverage testing tool.

CSS Preprocessors

Libraries for preprocessing CSS files.

  • c6439 29 - High performance SASS compatible-implementation compiler written in Go.
  • gcss254 10 - Pure Go CSS Preprocessor.
  • go-libsass61 10 - Go wrapper to the 100% Sass compatible libsass project.

Data Structures

Generic datastructures and algorithms in Go.

  • binpacker38 9 - Binary packer and unpacker helps user build custom binary stream.
  • bit - Golang set data structure with bonus bit-twiddling functions.
  • bitset314 77 - Go package implementing bitsets.
  • bloom3 0 - Bloom filters implemented in Go.
  • bloom - Golang Bloom filter implementation.
  • boomfilters864 56 - Probabilistic data structures for processing continuous, unbounded streams.
  • concurrent-writer - Highly concurrent drop-in replacement for bufio.Writer.
  • conjungo5 1 - A small, powerful and flexible merge library.
  • count-min-log27 6 - Go implementation Count-Min-Log sketch: Approximately counting with approximate counters (Like Count-Min sketch but using less memory).
  • cuckoofilter3 1 - Cuckoo filter: a good alternative to a counting bloom filter implemented in Go.
  • encoding - Integer Compression Libraries for Go.
  • go-adaptive-radix-tree18 3 - Go implementation of Adaptive Radix Tree.
  • go-datastructures4k 444 - Collection of useful, performant, and thread-safe data structures.
  • go-ef - A Go implementation of the Elias-Fano encoding.
  • go-geoindex248 28 - In-memory geo index.
  • go-rquad60 2 - Region quadtrees with efficient point location and neighbour finding.
  • gods3k 254 - Go Data Structures. Containers, Sets, Lists, Stacks, Maps, BidiMaps, Trees, HashSet etc.
  • golang-set598 82 - Thread-Safe and Non-Thread-Safe high-performance sets for Go.
  • goset4 1 - A useful Set collection implementation for Go.
  • goskiplist58 14 - Skip list implementation in Go.
  • gota324 31 - Implementation of dataframes, series, and data wrangling methods for Go.
  • hilbert84 7 - Go package for mapping values to and from space-filling curves, such as Hilbert and Peano curves.
  • hyperloglog82 5 - HyperLogLog implementation with Sparse, LogLog-Beta bias correction and TailCut space reduction.
  • levenshtein - Levenshtein distance and similarity metrics with customizable edit costs and Winkler-like bonus for common prefix.
  • levenshtein - Implementation to calculate levenshtein distance in Go.
  • mafsa166 6 - MA-FSA implementation with Minimal Perfect Hashing.
  • merkletree - Implementation of a merkle tree providing an efficient and secure verification of the contents of data structures.
  • roaring197 27 - Go package implementing compressed bitsets.
  • skiplist10 2 - Skiplist implementation in Go.
  • trie196 28 - Trie implementation in Go.
  • ttlcache38 7 - In-memory LRU string-interface{} map with expiration for golang.
  • willf/bloom359 66 - Go package implementing Bloom filters.

Database

Databases implemented in Go.

  • badger3k 166 - Fast key-value store in Go.
  • BigCache1k 74 - Efficient key/value cache for gigabytes of data.
  • bolt7k 627 - Low-level key/value database for Go.
  • buntdb2k 103 - Fast, embeddable, in-memory key/value database for Go with custom indexing and spatial support.
  • cache2go216 96 - In-memory key:value cache which supports automatic invalidation based on timeouts.
  • clusteredBigCache - BigCache with clustering support and individual item expiration.
  • cockroach13k 2k - Scalable, Geo-Replicated, Transactional Datastore.
  • couchcache23 4 - RESTful caching micro-service backed by Couchbase server.
  • dgraph5k 384 - Scalable, Distributed, Low Latency, High Throughput Graph Database.
  • diskv496 52 - Home-grown disk-backed key-value store.
  • eliasdb435 18 - Dependency-free, transactional graph database with REST API, phrase search and SQL-like query language.
  • forestdb12 1 - Go bindings for ForestDB.
  • GCache261 47 - Cache library with support for expirable Cache, LFU, LRU and ARC.
  • geocache63 1 - In-memory cache that is suitable for geolocation based applications.
  • go-cache203 40 - In-memory key:value store/cache (similar to Memcached) library for Go, suitable for single-machine applications.
  • goleveldb2k 240 - Implementation of the LevelDB10k 3k key/value database in Go.
  • gorocksdb - Gorocksdb is a wrapper for RocksDB written in Go.
  • groupcache3k 285 - Groupcache is a caching and cache-filling library, intended as a replacement for memcached in many cases.
  • influxdb7k 1k - Scalable datastore for metrics, events, and real-time analytics.
  • jaeger2k 170 - A distributed tracing system.
  • ledisdb2k 322 - Ledisdb is a high performance NoSQL like Redis based on LevelDB.
  • levigo208 47 - Levigo is a Go wrapper for LevelDB.
  • moss114 11 - Moss is a simple LSM key-value storage engine written in 100% Go.
  • piladb151 17 - Lightweight RESTful database engine based on stack data structures.
  • prometheus16k 2k - Monitoring system and time series database.
  • rqlite2k 150 - The lightweight, distributed, relational database built on SQLite.
  • Scribble54 17 - Tiny flat file JSON store.
  • tempdb4 1 - Key-value store for temporary items.
  • tidb13k 2k - TiDB is a distributed SQL database. Inspired by the design of Google F1.
  • tiedot2k 203 - Your NoSQL database powered by Golang.
  • Tile383k 174 - Geolocation DB with spatial index and realtime geofencing.

Database schema migration.

  • darwin37 3 - Database schema evolution library for Go.
  • go-fixtures - Django style fixtures for Golang's excellent built-in database/sql library.
  • gondolier - Gondolier is a library to auto migrate database schemas using structs.
  • goose39 9 - Database migration tool. You can manage your database's evolution by creating incremental SQL or Go scripts.
  • gormigrate39 5 - Database schema migration helper for Gorm ORM.
  • migrate1k 311 - Database migrations. CLI and Golang library.
  • pravasan19 3 - Simple Migration tool - currently for MySQL but planning to soon support Postgres, SQLite, MongoDB, etc.
  • soda532 85 - Database migration, creation, ORM, etc... for MySQL, PostgreSQL, and SQLite.
  • sql-migrate710 78 - Database migration tool. Allows embedding migrations into the application using go-bindata.

Database tools.

  • chproxy68 7 - HTTP proxy for ClickHouse database.
  • go-mysql714 213 - Go toolset to handle MySQL protocol and replication.
  • go-mysql-elasticsearch936 228 - Sync your MySQL data into Elasticsearch automatically.
  • kingshard3k 591 - kingshard is a high performance proxy for MySQL powered by Golang.
  • myreplication85 25 - MySql binary log replication listener. Supports statement and row based replication.
  • orchestrator1k 171 - MySQL replication topology manager & visualizer.
  • pgweb5k 406 - Web-based PostgreSQL database browser.
  • prep - Use prepared SQL statements without changing your code.
  • pREST1k 50 - Serve a RESTful API from any PostgreSQL database.
  • rwdb - rwdb provides read replica capability for multiple database servers setup.
  • vitess6k 810 - vitess provides servers and tools which facilitate scaling of MySQL databases for large scale web services.

SQL query builder, libraries for building and using SQL.

  • dat500 44 - Go Postgres Data Access Toolkit.
  • Dotsql307 25 - Go library that helps you keep sql files in one place and use them with ease.
  • gendry - Non-invasive SQL builder and powerful data binder.
  • goqu336 33 - Idiomatic SQL builder and query library.
  • igor63 2 - Abstraction layer for PostgreSQL that supports advanced functionality and uses gorm-like syntax.
  • ozzo-dbx162 20 - Powerful data retrieval methods as well as DB-agnostic query building capabilities.
  • scaneo99 6 - Generate Go code to convert database rows into arbitrary structs.
  • sqrl67 8 - SQL query builder, fork of Squirrel with improved performance.
  • Squirrel558 59 - Go library that helps you build SQL queries.
  • xo1k 93 - 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

Libraries for connecting and operating databases.

  • Relational Databases

    • avatica29 8 - Apache Phoenix/Avatica SQL driver for database/sql.
    • bgc5 1 - Datastore Connectivity for BigQuery for go.
    • firebirdsql65 21 - Firebird RDBMS SQL driver for Go.
    • go-adodb50 43 - Microsoft ActiveX Object DataBase driver for go that uses database/sql.
    • go-bqstreamer131 18 - BigQuery fast and concurrent stream insert.
    • go-mssqldb660 187 - Microsoft MSSQL driver for Go.
    • go-oci8226 126 - Oracle driver for go that uses database/sql.
    • go-sql-driver/mysql5k 1k - MySQL driver for Go.
    • go-sqlite32k 552 - SQLite3 driver for go that uses database/sql.
    • gofreetds50 29 - Microsoft MSSQL driver. Go wrapper over FreeTDS.
    • pgx1k 172 - PostgreSQL driver supporting features beyond those exposed by database/sql.
    • pq3k 500 - Pure Go Postgres driver for database/sql.
  • NoSQL Databases

    • aerospike-client-go265 116 - Aerospike client in Go language.
    • arangolite49 18 - Lightweight golang driver for ArangoDB.
    • asc - Datastore Connectivity for Aerospike for go.
    • cayley9k 784 - Graph database with support for multiple backends.
    • dsc2 3 - Datastore connectivity for SQL, NoSQL, structured files.
    • dynago32 12 - Dynago is a principle of least surprise client for DynamoDB.
    • go-couchbase124 59 - Couchbase client in Go.
    • go-couchdb13 1 - Yet another CouchDB HTTP API wrapper for Go.
    • gocb199 64 - Official Couchbase Go SDK.
    • gocql - Go language driver for Apache Cassandra.
    • gomemcache378 92 - memcache client library for the Go programming language.
    • gorethink1k 138 - Go language driver for RethinkDB.
    • goriak18 2 - Go language driver for Riak KV.
    • mgo279 33 - MongoDB driver for the Go language that implements a rich and well tested selection of features under a very simple API following standard Go idioms
    • neo4j21 4 - Neo4j Rest API Bindings for Golang.
    • Neo4j-GO61 13 - Neo4j REST Client in golang.
    • neoism330 64 - Neo4j client for Golang.
    • redigo4k 733 - Redigo is a Go client for the Redis database.
    • redis3k 570 - Redis client for Golang.
    • redis407 139 - Simple, powerful Redis client for Go.
    • redis152 18 - Redis-protocol compatible TCP servers/services.
    • xredis - Typesafe, customizable, clean & easy to use Redis client.
  • Search and Analytic Databases.

    • bleve4k 363 - Modern text indexing library for go.
    • elastic2k 589 - Elasticsearch client for Go.
    • elasticsql48 7 - Convert sql to elasticsearch dsl in Go.
    • elastigo384 111 - Elasticsearch client library.
    • goes52 24 - Library to interact with Elasticsearch.
    • riot691 50 - Go Open Source, Distributed, Simple and efficient Search Engine
    • skizze458 43 - probabilistic data-structures service and storage.

Date and Time

Libraries for working with dates and times.

  • carbon103 12 - Simple Time extension with a lot of util methods, ported from PHP Carbon library.
  • date - Augments Time for working with dates, date ranges, time spans, periods, and time-of-day.
  • dateparse26 3 - Parse date's without knowing format in advance.
  • durafmt162 9 - Time duration formatting library for Go.
  • feiertage - Set of functions to calculate public holidays in Germany, incl. specialization on the states of Germany (Bundesländer). Things like Easter, Pentecost, Thanksgiving...
  • go-persian-calendar18 5 - The implementation of the Persian (Solar Hijri) Calendar in Go (golang).
  • go-sunrise - Calculate the sunrise and sunset times for a given location.
  • goweek10 4 - Library for working with week entity in golang.
  • now893 73 - Now is a time toolkit for golang.
  • NullTime1 2 - Nullable time.Time.
  • timespan27 2 - For interacting with intervals of time, defined as a start time and a duration.
  • timeutil139 5 - Useful extensions (Timedelta, Strftime, ...) to the golang's time package.
  • tuesday - Ruby-compatible Strftime function.

Distributed Systems

Packages that help with building Distributed Systems.

  • celeriac22 3 - Library for adding support for interacting and monitoring Celery workers, tasks and events in Go.
  • digota141 9 - grpc ecommerce microservice.
  • drmaa18 9 - Job submission library for cluster schedulers based on the DRMAA standard.
  • emitter-io156 34 - High performance, distributed, secure and low latency publish-subscribe platform built with MQTT, Websockets and love.
  • flowgraph - MPI-style ready-send coordination layer.
  • gleam800 77 - Fast and scalable distributed map/reduce system written in pure Go and Luajit, combining Go's high concurrency with Luajit's high performance, runs standalone or distributed.
  • glow2k 142 - Easy-to-Use scalable distributed big data processing, Map-Reduce, DAG execution, all in pure Go.
  • go-health112 10 - Library for enabling asynchronous dependency health checks in your service.
  • go-jump17 1 - Port of Google's "Jump" Consistent Hash function.
  • go-kit8k 986 - Microservice toolkit with support for service discovery, load balancing, pluggable transports, request tracking, etc.
  • gorpc381 55 - Simple, fast and scalable RPC library for high load.
  • grpc-go5k 1k - The Go language implementation of gRPC. HTTP/2 based RPC.
  • hprose325 56 - Very newbility RPC Library, support 25+ languages now.
  • jsonrpc29 5 - The jsonrpc package helps implement of JSON-RPC 2.0.
  • jsonrpc6 6 - JSON-RPC 2.0 HTTP client implementation.
  • KrakenD250 37 - Ultra performant API Gateway framework with middlewares.
  • micro4k 310 - Pluggable microservice toolkit and distributed systems platform.
  • NATS3k 379 - Lightweight, high performance messaging system for microservices, IoT, and cloud native systems.
  • raft2k 244 - Golang implementation of the Raft consensus protocol, by HashiCorp.
  • raft19k 4k - Go implementation of the Raft consensus protocol, by CoreOS.
  • ringpop-go382 34 - Scalable, fault-tolerant application-layer sharding for Go applications.
  • rpcx2k 289 - Distributed pluggable RPC service framework like alibaba Dubbo.
  • sleuth215 11 - Library for master-less p2p auto-discovery and RPC between HTTP services (using ZeroMQ4k 1k ).
  • tendermint1k 276 - 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.
  • torrent2k 214 - BitTorrent client package.
    • dht - BitTorrent Kademlia DHT implementation.
    • go-peerflix278 44 - Video streaming torrent client.

Email

Libraries that implement email creation and sending.

  • douceur102 17 - CSS inliner for your HTML emails.
  • email835 89 - A robust and flexible email library for Go.
  • go-dkim - DKIM library, to sign & verify email.
  • go-imap254 36 - IMAP library for clients and servers.
  • go-message17 2 - Streaming library for the Internet Message Format and mail messages.
  • Gomail1k 143 - Gomail is a very simple and powerful package to send emails.
  • Hectane91 11 - Lightweight SMTP client providing an HTTP API.
  • hermes987 38 - Golang package that generates clean, responsive HTML e-mails.
  • MailHog2k 138 - Email and SMTP testing with web and API interface.
  • SendGrid312 152 - SendGrid's Go library for sending email.
  • smtp32 6 - SMTP server protocol state machine.

Embeddable Scripting Languages

Embedding other languages inside your go code.

  • agora149 11 - Dynamically typed, embeddable programming language in Go.
  • anko458 54 - Scriptable interpreter written in Go.
  • binder - Go to Lua binding library, based on gopher-lua2k 184 .
  • gisp218 11 - Simple LISP in Go.
  • go-duktape519 53 - Duktape JavaScript engine bindings for Go.
  • go-lua1k 72 - Port of the Lua 5.2 VM to pure Go.
  • go-php352 49 - PHP bindings for Go.
  • go-python530 57 - naive go bindings to the CPython C-API.
  • golua358 112 - Go bindings for Lua C API.
  • gopher-lua2k 184 - Lua 5.1 VM and compiler written in Go.
  • ngaro7 1 - Embeddable Ngaro VM implementation enabling scripting in Retro.
  • otto3k 301 - JavaScript interpreter written in Go.
  • purl - Perl 5.18.2 embedded in Go.

Files

Libraries for handling files and file systems.

  • afero1k 137 - FileSystem Abstraction System for Go.
  • go-csv-tag - Load csv file using tag.
  • go-gtfs - Load gtfs files in go.
  • notify237 33 - File system event notification library with simple API, similar to os/signal.
  • skywalker10 1 - Package to allow one to concurrently go through a filesystem with ease.
  • tarfs - Implementation of the FileSystem interface for tar files.

Financial

Packages for accounting and finance.

  • accounting305 15 - money and currency formatting for golang.
  • decimal546 114 - Arbitrary-precision fixed-point decimal numbers.
  • go-finance472 37 - Comprehensive financial markets data in Go.
  • go-money - Implementation of Fowler's Money pattern.
  • ofxgo5 1 - Query OFX servers and/or parse the responses (with example command-line client).
  • transaction - Embedded transactional database of accounts, running in multithreaded mode.
  • vat - VAT number validation & EU VAT rates.

Forms

Libraries for working with forms.

  • bind4 1 - Bind form data to any Go values.
  • binding626 53 - Binds form and JSON data from net/http Request to struct.
  • conform65 8 - Keeps user input in check. Trims, sanitizes & scrubs data based on struct tags.
  • form175 10 - Decodes url.Values into Go value(s) and Encodes Go value(s) into url.Values. Dual Array and Full map support.
  • formam86 12 - decode form's values into a struct.
  • forms71 5 - Framework-agnostic library for parsing and validating form/JSON data which supports multipart forms and files.
  • gorilla/csrf219 45 - CSRF protection for Go web applications & services.
  • nosurf327 18 - CSRF protection middleware for Go.

Game Development

Awesome game development libraries.

  • Azul3D274 25 - 3D game engine written in Go.
  • Ebiten491 58 - simple 2D game library in Go.
  • engo592 84 - Engo is an open-source 2D game engine written in Go. It follows the Entity-Component-System paradigm.
  • GarageEngine128 10 - 2d game engine written in Go working on OpenGL.
  • glop59 5 - Glop (Game Library Of Power) is a fairly simple cross-platform game library.
  • go-astar98 6 - Go implementation of the A* path finding algorithm.
  • go-collada - Go package for working with the Collada file format.
  • go-sdl2724 155 - Go bindings for the Simple DirectMedia Layer.
  • go3d52 8 - Performance oriented 2D/3D math package for Go.
  • gonet332 156 - Game server skeleton implemented with golang.
  • goworld107 22 - Scalable game server engine, featuring space-entity framework and hot-swapping
  • Leaf1k 438 - Lightweight game server framework.
  • nano295 31 - Lightweight, facility, high performance golang based game server framework
  • Oak666 22 - Pure Go game engine.
  • Pixel520 23 - Hand-crafted 2D game library in Go.
  • raylib-go149 9 - Go bindings for raylib, a simple and easy-to-use library to learn videogames programming.
  • termloop799 50 - Terminal-based game engine for Go, built on top of Termbox.

Generation and Generics

Tools to enhance the language with features like generics via code generation.

  • efaceconv20 3 - Code generation tool for high performance conversion from interface{} to immutable type without allocations.
  • gen870 69 - Code generation tool for ‘generics’-like functionality.
  • go-enum15 1 - Code generation for enums from code comments.
  • go-linq1k 72 - .NET LINQ-like query methods for Go.
  • goderive367 10 - Derives functions from input types.
  • interfaces122 5 - Command line tool for generating interface definitions.
  • jennifer154 13 - Generate arbitrary Go code without templates.
  • pkgreflect13 3 - Go preprocessor for package scoped reflection.

Go Compilers

Tools for compiling Go to other languages.

  • gopherjs7k 351 - Compiler from Go to JavaScript.
  • llgo621 44 - LLVM-based compiler for Go.
  • tardisgo372 20 - Golang to Haxe to CPP/CSharp/Java/JavaScript transpiler.

Goroutines

Tools for managing and working with Goroutines.

  • cyclicbarrier - CyclicBarrier for golang.
  • go-floc81 4 - Orchestrate goroutines with ease.
  • go-flow29 2 - Control goroutines execution order.
  • GoSlaves2 1 - Simple and Asynchronous Goroutine pool library.
  • goworker2k 158 - goworker is a Go-based background worker.
  • grpool194 21 - Lightweight Goroutine pool.
  • parallel-fn - Run functions in parallel.
  • pool289 18 - Limited consumer goroutine or unlimited goroutine pool for easier goroutine handling and cancellation.
  • semaphore10 7 - Semaphore pattern implementation with timeout of lock/unlock operations based on channel and context.
  • semaphore - Fast resizable semaphore implementation based on CAS (faster than channel-based semaphore implementations).
  • tunny534 45 - Goroutine pool for golang.
  • worker-pool4 1 - goworker is a Go simple async worker pool.
  • workerpool2 1 - Goroutine pool that limits the concurrency of task execution, not the number of tasks queued.

GUI

Libraries for building GUI Applications.

Toolkits

  • app2k 69 - Package to create apps with GO, HTML and CSS. Supports: MacOS, Windows in progress.
  • go-astilectron445 26 - Build cross platform GUI apps with GO and HTML/JS/CSS (powered by Electron).
  • go-gtk - Go bindings for GTK.
  • go-qml1k 102 - QML support for the Go language.
  • go-sciter94 10 - Go bindings for Sciter: the Embeddable HTML/CSS/script engine for modern desktop UI development. Cross platform.
  • goqt1k 128 - Golang bindings to the Qt cross-platform application framework.
  • gotk3248 68 - Go bindings for GTK3.
  • gowd - Rapid and simple desktop UI development with GO, HTML, CSS and NW.js. Cross platform.
  • qt2k 143 - Qt binding for Go (support for Windows / macOS / Linux / Android / iOS / Sailfish OS / Raspberry Pi).
  • ui4k 353 - Platform-native GUI library for Go. Cross platform.
  • walk2k 408 - Windows application library kit for Go.
  • webview699 42 - Cross-platform webview window with simple two-way JavaScript bindings (Windows / macOS / Linux).

Interaction

  • gosx-notifier167 7 - OSX Desktop Notifications library for Go.
  • robotgo3k 231 - Go Native cross-platform GUI system automation. Control the mouse, keyboard and other.
  • systray231 40 - Cross platform Go library to place an icon and menu in the notification area.
  • trayhost100 10 - Cross-platform Go library to place an icon in the host operating system's taskbar.

Hardware

Libraries, tools, and tutorials for interacting with hardware.

See go-hardware525 44 for a comprehensive list.

Images

Libraries for manipulating images.

  • bild2k 68 - Collection of image processing algorithms in pure Go.
  • bimg400 89 - Small package for fast and efficient image processing using libvips.
  • geopattern - Create beautiful generative image patterns from a string.
  • gg894 55 - 2D rendering in pure Go.
  • gift982 68 - Package of image processing filters.
  • go-cairo31 7 - Go binding for the cairo graphics library.
  • go-gd27 10 - Go binding for GD library.
  • go-nude96 9 - Nudity detection with Go.
  • go-opencv702 139 - Go bindings for OpenCV.
  • go-webcolors13 0 - Port of webcolors library from Python to Go.
  • gocv602 65 - Go package for computer vision using OpenCV 3.3+.
  • govatar202 7 - Library and CMD tool for generating funny avatars.
  • imagick635 93 - Go binding to ImageMagick's MagickWand C API.
  • imaginary1k 161 - Fast and simple HTTP microservice for image resizing.
  • imaging1k 160 - Simple Go image processing package.
  • img56 3 - Selection of image manipulation tools.
  • ln2k 62 - 3D line art rendering in Go.
  • mpo4 1 - Decoder and conversion tool for MPO 3D Photos.
  • picfit686 76 - An image resizing server written in Go.
  • pt1k 81 - Path tracing engine written in Go.
  • resize1k 151 - Image resizing for Go with common interpolation methods.
  • rez95 2 - Image resizing in pure Go and SIMD.
  • smartcrop915 52 - Finds good crops for arbitrary images and crop sizes.
  • svgo307 28 - Go Language Library for SVG generation.
  • tga11 5 - Package tga is a TARGA image format decoder/encoder.

IoT (Internet of Things)

Libraries for programming devices of the IoT.

  • connectordb57 7 - Open-Source Platform for Quantified Self & IoT.
  • devices - Suite of libraries for IoT devices, experimental for x/exp/io.
  • eywa - Project Eywa is essentially a connection manager that keeps track of connected devices.
  • - Project Flogo is an Open Source Framework for IoT Edge Apps & Integration.
  • gatt509 140 - Gatt is a Go package for building Bluetooth Low Energy peripherals.
  • gobot4k 554 - Gobot is a framework for robotics, physical computing, and the Internet of Things.
  • mainflux52 11 - Industrial IoT Messaging and Device Management Server.
  • periph - Peripherals I/O to interface with low-level board facilities.
  • sensorbee107 22 - Lightweight stream processing engine for IoT.

Logging

Libraries for generating and working with log files.

  • distillog - distilled levelled logging (think of it as stdlib + log levels).
  • glg1 1 - glg is simple and fast leveled logging library for Go.
  • glog598 80 - Leveled execution logs for Go.
  • go-cronowriter - Simple writer that rotate log files automatically based on current date and time, like cronolog.
  • go-log6 4 - Log lib supports level and multi handlers.
  • go-log3 2 - Log4j implementation in Go.
  • go-logger178 23 - Simple logger of Go Programs, with level handlers.
  • gologger26 4 - Simple easy to use log lib for go, logs in Colored Console, Simple Console, File or Elasticsearch.
  • gomol4 2 - Multiple-output, structured logging for Go with extensible logging outputs.
  • gone/log3 3 - Fast, extendable, full-featured, std-lib source compatible log library.
  • journald - Go implementation of systemd Journal's native API for logging.
  • log406 51 - Structured logging package for Go.
  • log228 22 - Simple, configurable and scalable Structured Logging for Go.
  • log - Structured log interface for Go cleanly separates logging facade from its implementation.
  • log-voyage84 12 - Full-featured logging saas written in golang.
  • log15655 97 - Simple, powerful logging for Go.
  • logdump - Package for multi-level logging.
  • logex12 6 - Golang log lib, supports tracking and level, wrap by standard log lib.
  • logger22 1 - Minimalistic logging library for Go.
  • - Golang logger to different configurable writers.
  • logrus4k 662 - Structured logger for Go.
  • logrusly15 8 - logrus2k 296 plug-in to send errors to a Loggly.
  • logutils26 7 - Utilities for slightly better logging in Go (Golang) extending the standard logger.
  • logxi328 37 - 12-factor app logger that is fast and makes you happy.
  • lumberjack492 85 - Simple rolling logger, implements io.WriteCloser.
  • mlog - Simple logging module for go, with 5 levels, an optional rotating logfile feature and stdout/stderr output.
  • ozzo-log82 13 - High performance logging supporting log severity, categorization, and filtering. Can send filtered log messages to various targets (e.g. console, network, mail).
  • seelog913 182 - Logging functionality with flexible dispatching, filtering, and formatting.
  • spew1k 120 - Implements a deep pretty printer for Go data structures to aid in debugging.
  • stdlog18 2 - Stdlog is an object-oriented library providing leveled logging. It is very useful for cron jobs.
  • tail417 102 - Go package striving to emulate the features of the BSD tail program.
  • xlog - Plugin architecture and flexible log system for Go, with level ctrl, multiple log target and custom log format.
  • xlog106 12 - Structured logger for net/context aware HTTP handlers with flexible dispatching.
  • zap3k 243 - Fast, structured, leveled logging in Go.
  • zerolog535 27 - Zero-allocation JSON logger.

Machine Learning

Libraries for Machine Learning.

  • bayesian184 29 - Naive Bayesian Classification for Golang.
  • CloudForest518 69 - Fast, flexible, multi-threaded ensembles of decision trees for machine learning in pure Go.
  • fonet - A Deep Neural Network library written in Go.
  • gago379 25 - Multi-population, flexible, parallel genetic algorithm.
  • go-cluster - Go implementation of the k-modes and k-prototypes clustering algorithms.
  • go-fann47 10 - Go bindings for Fast Artificial Neural Networks(FANN) library.
  • go-galib60 14 - Genetic Algorithms library written in Go / golang.
  • go-pr21 4 - Pattern recognition package in Go lang.
  • gobrain13 4 - Neural Networks written in go.
  • godist - Various probability distributions, and associated methods.
  • goga59 4 - Genetic algorithm library for Go.
  • GoLearn4k 555 - General Machine Learning library for Go.
  • golinear33 13 - liblinear bindings for Go.
  • goml713 64 - On-line Machine Learning in Go.
  • goRecommend5 1 - Recommendation Algorithms library written in Go.
  • gorgonia2k 165 - graph-based computational library like Theano for Go that provides primitives for building various machine learning and neural network algorithms.
  • goscore3 2 - Go Scoring API for PMML.
  • gosseract404 67 - Go package for OCR (Optical Character Recognition), by using Tesseract C++ library.
  • libsvm27 3 - libsvm golang version derived work based on LIBSVM 3.14.
  • mlgo - This project aims to provide minimalistic machine learning algorithms in Go.
  • neat - Plug-and-play, parallel Go framework for NeuroEvolution of Augmenting Topologies (NEAT).
  • neural-go31 3 - Multilayer perceptron network implemented in Go, with training via backpropagation.
  • probab - Probability distribution functions. Bayesian inference. Written in pure Go.
  • regommend42 4 - Recommendation & collaborative filtering engine.
  • shield48 13 - Bayesian text classifier with flexible tokenizers and storage backends for Go.
  • tfgo - Easy to use Tensorflow bindings: simplifies the usage of the official Tensorflow Go bindings. Define computational graphs in Go, load and execute models trained in Python.
  • Varis5 1 - Golang Neural Network.

Messaging

Libraries that implement messaging systems.

  • Centrifugo2k 203 - Real-time messaging (Websockets or SockJS) server in Go.
  • dbus164 61 - Native Go bindings for D-Bus.
  • drone-line26 4 - Sending Line notifications using a binary, docker or Drone CI.
  • emitter118 6 - Emits events using Go way, with wildcard, predicates, cancellation possibilities and many other good wins.
  • event - Implementation of the pattern observer.
  • EventBus31 3 - The lightweight event bus with async compatibility.
  • gaurun-client - Gaurun Client written in Go.
  • Glue234 16 - Robust Go and Javascript Socket Library (Alternative to Socket.io).
  • go-notify - Native implementation of the freedesktop notification spec.
  • go-nsq403 111 - the official Go package for NSQ.
  • go-socket.io2k 308 - socket.io library for golang, a realtime application framework.
  • go-vitotrol - Client library to Viessmann Vitotrol web service.
  • Gollum674 65 - A n:m multiplexer that gathers messages from different sources and broadcasts them to a set of destinations.
  • golongpoll347 24 - HTTP longpoll server library that makes web pub-sub simple.
  • goose - Server Sent Events in Go.
  • gopush-cluster582 164 - gopush-cluster is a go push server cluster.
  • gorush2k 210 - Push notification server using APNs22k 148 and google GCM97 45 .
  • guble85 11 - Messaging server using push notifications (Google Firebase Cloud Messaging, Apple Push Notification services, SMS) as well as websockets, a REST API, featuring distributed operation and message-persistence.
  • machinery2k 254 - Asynchronous task queue/job queue based on distributed message passing.
  • mangos561 66 - Pure go implementation of the Nanomsg ("Scalable Protocols") with transport interoperability.
  • melody684 79 - Minimalist framework for dealing with websocket sessions, includes broadcasting and automatic ping/pong handling.
  • messagebus - messagebus is a Go simple async message bus, perfect for using as event bus when doing event sourcing, CQRS, DDD.
  • NATS Go Client767 120 - Lightweight and high performance publish-subscribe and distributed queueing messaging system - this is the Go library.
  • nsq-event-bus11 2 - A tiny wrapper around NSQ topic and channel.
  • oplog83 9 - Generic oplog/replication system for REST APIs.
  • pubsub31 6 - Simple pubsub package for go.
  • rabbus5 2 - A tiny wrapper over amqp exchanges and queues.
  • rabtap - RabbitMQ swiss army knife cli app.
  • RapidMQ21 2 - RapidMQ is a lightweight and reliable library for managing of the local messages queue.
  • sarama3k 546 - Go library for Apache Kafka.
  • Uniqush-Push989 194 - Redis backed unified push service for server-side notifications to mobile devices.
  • zmq4557 95 - Go interface to ZeroMQ version 4. Also available for version 391 11 and version 27 2 .

Miscellaneous

These libraries were placed here because none of the other categories seemed to fit.

  • alice - Additive dependency injection container for Golang.
  • anagent - Minimalistic, pluggable Golang evloop/timer handler with dependency-injection.
  • antch - A fast, powerful and extensible web crawling & scraping framework.
  • archiver462 40 - Library and command for making and extracting .zip and .tar.gz archives.
  • autoflags5 0 - Go package to automatically define command line flags from struct fields.
  • avgRating - Calculate average score and rating based on Wilson Score Equation.
  • banner136 7 - Add beautiful banners into your Go applications.
  • base64Captcha265 64 - Base64captch supports digit, number, alphabet, arithmetic, audio and digit-alphabet captcha.
  • battery71 5 - Cross-platform, normalized battery information library.
  • bitio24 1 - Highly optimized bit-level Reader and Writer for Go.
  • browscap_go - GoLang Library for Browser Capabilities Project.
  • captcha - Package captcha provides an easy to use, unopinionated API for captcha generation.
  • conv298 6 - Package conv provides fast and intuitive conversions across Go types.
  • datacounter17 2 - Go counters for readers/writer/http.ResponseWriter.
  • errors2k 118 - Package that provides simple error handling primitives.
  • go-chat-bot223 58 - IRC, Slack & Telegram bot written in Go.
  • go-commons-pool387 57 - Generic object pool for Golang.
  • go-multierror285 23 - Go (golang) package for representing a list of errors as a single error.
  • go-openapi - Collection of packages to parse and utilize open-api schemas.
  • go-resiliency503 35 - Resiliency patterns for golang.
  • go-sarah - Framework to build bot for desired chat services including LINE, Slack, Gitter and more.
  • go-unarr14 3 - Decompression library for RAR, TAR, ZIP and 7z archives.
  • go.uuid1k 203 - Implementation of Universally Unique Identifier (UUID). Supported both creation and parsing of UUIDs.
  • gofakeit53 10 - Random data generator written in go.
  • goid - Generate and Parse RFC4122 compliant V4 UUIDs.
  • gopsutil2k 559 - Cross-platform library for retrieving process and system utilization(CPU, Memory, Disks, etc).
  • gosms1k 90 - Your own local SMS gateway in Go that can be used to send SMS.
  • gountries125 15 - Package that exposes country and subdivision data.
  • hanu21 4 - Framework for writing Slack bots.
  • health231 13 - Easy to use, extensible health check library.
  • healthcheck18 10 - An opinionated and concurrent health-check HTTP handler for RESTful services.
  • hostutils - A golang library for packing and unpacking FQDNs list.
  • indigo17 2 - Distributed unique ID generator of using Sonyflake and encoded by Base58.
  • jobs424 30 - Persistent and flexible background jobs library.
  • lk - A simple licensing library for golang.
  • margelet47 12 - Framework for building Telegram bots.
  • persian - Some utilities for Persian language in go.
  • secdl - Lighttpd ModSecDownload algorithm ported to go to secure download urls.
  • shellwords - A Golang library to manipulate strings according to the word parsing rules of the UNIX Bourne shell.
  • shortid - Distributed generation of super short, unique, non-sequential, URL friendly IDs.
  • slacker61 3 - Easy to use framework to create Slack bots.
  • stats60 11 - Monitors Go MemStats + System stats such as Memory, Swap and CPU and sends via UDP anywhere you want for logging etc...
  • turtle16 2 - Emojis for Go.
  • uuid - Generate, encode, and decode UUIDs v1 with fast or cryptographic-quality random node identifier.
  • VarHandler3 1 - Generate boilerplate http input and ouput handling.
  • werr7 1 - Error Wrapper creates an wrapper for the error type in Go which captures the File, Line and Stack of where it was called.
  • wuid - An extremely fast unique number generator, 10-135 times faster than UUID.
  • xkg24 2 - X Keyboard Grabber.
  • xstrings431 33 - Collection of useful string functions ported from other languages.

Natural Language Processing

Libraries for working with human languages.

  • dpar18 2 - Transition-based statistical dependency parser.
  • go-eco2 1 - Similarity, dissimilarity and distance matrices; diversity, equitability and inequality measures; species richness estimators; coenocline models.
  • go-i18n502 83 - Package and an accompanying tool to work with localized text.
  • go-mystem - CGo bindings to Yandex.Mystem - russian morphology analyzer.
  • go-nlp23 9 - Utilities for working with discrete probability distributions and other tools useful for doing NLP work.
  • go-stem27 7 - Implementation of the porter stemming algorithm.
  • go-unidecode16 2 - ASCII transliterations of Unicode text.
  • go2vec18 2 - Reader and utility functions for word2vec embeddings.
  • gojieba280 67 - This is a Go implementation of jieba9k 3k which a Chinese word splitting algorithm.
  • golibstemmer10 3 - Go bindings for the snowball libstemmer library including porter 2.
  • gounidecode24 6 - Unicode transliterator (also known as unidecode) for Go.
  • gse - Go efficient text segmentation; support english, chinese, japanese and other.
  • icu12 1 - Cgo binding for icu4c C library detection and conversion functions. Guaranteed compatibility with version 50.1.
  • libtextcat11 6 - Cgo binding for libtextcat C library. Guaranteed compatibility with version 2.2.
  • MMSEGO35 7 - This is a GO implementation of MMSEG which a Chinese word splitting algorithm.
  • nlp265 9 - Extract values from strings and fill your structs with nlp.
  • nlp21 1 - Go Natural Language Processing library supporting LSA (Latent Semantic Analysis).
  • paicehusk9 2 - Golang implementation of the Paice/Husk Stemming Algorithm.
  • petrovich - Petrovich is the library which inflects Russian names to given grammatical case.
  • porter2 0 - This is a fairly straightforward port of Martin Porter's C implementation of the Porter stemming algorithm.
  • porter2 - Really fast Porter 2 stemmer.
  • prose538 23 - Library for text processing that supports tokenization, part-of-speech tagging, named-entity extraction, and more.
  • RAKE.go - Go port of the Rapid Automatic Keyword Extraction Algorithm (RAKE).
  • segment29 5 - Go library for performing Unicode Text Segmentation as described in Unicode Standard Annex #29
  • sentences200 17 - Sentence tokenizer: converts text into a list of sentences.
  • shamoji - The shamoji is word filtering package written in Go.
  • snowball10 0 - Snowball stemmer port (cgo wrapper) for Go. Provides word stem extraction functionality Snowball native.
  • stemmer23 0 - Stemmer packages for Go programming language. Includes English and German stemmers.
  • textcat23 4 - Go package for n-gram based text categorization, with support for utf-8 and raw text.
  • whatlanggo - Natural language detection package for Go. Supports 84 languages and 24 scripts (writing systems e.g. Latin, Cyrillic, etc).
  • when - Natural EN and RU language date/time parser with pluggable rules.

Networking

Libraries for working with various layers of the network.

  • arp89 17 - Package arp implements the ARP protocol, as described in RFC 826.
  • buffstreams - Streaming protocolbuffer data over TCP made easy.
  • canopus64 16 - CoAP Client/Server implementation (RFC 7252).
  • cidranger - Fast IP to CIDR lookup for Go.
  • dhcp626 8 - Package dhcp6 implements a DHCPv6 server, as described in RFC 3315.
  • dns3k 537 - Go library for working with DNS.
  • ether39 1 - Cross-platform Go package for sending and receiving ethernet frames.
  • ethernet101 9 - Package ethernet implements marshaling and unmarshaling of IEEE 802.3 Ethernet II frames and IEEE 802.1Q VLAN tags.
  • fasthttp5k 459 - Package fasthttp is a fast HTTP implementation for Go, up to 10 times faster than net/http.
  • fortio216 12 - Load testing library and command line tool and web UI. Allows to specify a set query-per-second load and record latency histograms and other useful stats and graph them.
  • ftp214 135 - Package ftp implements a FTP client as described in RFC 959.
  • go-getter424 47 - Go library for downloading files or directories from various sources using a URL.
  • go-stun154 35 - Go implementation of the STUN client (RFC 3489 and RFC 5389).
  • gobgp1k 296 - BGP implemented in the Go Programming Language.
  • golibwireshark7 1 - Package golibwireshark use libwireshark library to decode pcap file and analyse dissection data.
  • gopacket1k 298 - Go library for packet processing with libpcap bindings.
  • gopcap122 67 - Go wrapper for libpcap.
  • goshark4 2 - Package goshark use tshark to decode IP packet and create data struct to analyse packet.
  • gosnmp248 83 - Native Go library for performing SNMP actions.
  • gotcp33 12 - Go package for quickly writing tcp applications.
  • grab226 23 - Go package for managing file downloads.
  • graval16 3 - Experimental FTP server framework.
  • jazigo52 5 - Jazigo is a tool written in Go for retrieving configuration for multiple network devices.
  • kcp-go885 215 - KCP - Fast and Reliable ARQ Protocol.
  • kcptun7k 1k - Extremely simple & fast udp tunnel based on KCP protocol.
  • lhttp379 48 - Powerful websocket framework, build your IM server more easily.
  • linkio - Network link speed simulation for Reader/Writer interfaces.
  • llb - It's a very simple but quick backend for proxy servers. Can be useful for fast redirection to predefined domain with zero memory allocation and fast response.
  • mdns53 13 - Simple mDNS (Multicast DNS) client/server library in Golang.
  • mqttPaho - The Paho Go Client provides an MQTT client library for connection to MQTT brokers via TCP, TLS or WebSockets.
  • portproxy12 0 - Simple TCP proxy which adds CORS support to API's which don't support it.
  • publicip4 1 - Package publicip returns your public facing IPv4 address (internet egress).
  • raw87 17 - Package raw enables reading and writing data at the device driver level for a network interface.
  • sftp427 164 - Package sftp implements the SSH File Transfer Protocol as described in https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt.
  • ssh508 45 - Higher-level API for building SSH servers (wraps crypto/ssh).
  • sslb97 6 - It's a Super Simples Load Balancer, just a little project to achieve some kind of performance.
  • stun8 1 - Go implementation of RFC 5389 STUN protocol.
  • tcp_server - Go library for building tcp servers faster.
  • utp95 18 - Go uTP micro transport protocol implementation.
  • water219 59 - Simple TUN/TAP library.
  • winrm114 43 - Go WinRM client to remotely execute commands on Windows machines.
  • xtcp7 1 - TCP Server Framework with simultaneous full duplex communication,graceful shutdown,custom protocol.
  • YANNFF198 27 - Framework for rapid development of performant network functions for cloud and bare-metal.

OpenGL

Libraries for using OpenGL in Go.

  • gl796 115 - Go bindings for OpenGL (generated via glow).
  • glfw415 61 - Go bindings for GLFW 3.
  • goxjs/gl110 9 - Go cross-platform OpenGL bindings (OS X, Linux, Windows, browsers, iOS, Android).
  • goxjs/glfw44 6 - Go cross-platform glfw library for creating an OpenGL context and receiving events.
  • mathgl183 30