Browse free open source Go Libraries and projects below. Use the toggles on the left to filter open source Go Libraries by OS, license, language, programming language, and project status.

  • AI-powered service management for IT and enterprise teams Icon
    AI-powered service management for IT and enterprise teams

    Enterprise-grade ITSM, for every business

    Give your IT, operations, and business teams the ability to deliver exceptional services—without the complexity. Maximize operational efficiency with refreshingly simple, AI-powered Freshservice.
    Try it Free
  • MongoDB Atlas runs apps anywhere Icon
    MongoDB Atlas runs apps anywhere

    Deploy in 115+ regions with the modern database for every enterprise.

    MongoDB Atlas gives you the freedom to build and run modern applications anywhere—across AWS, Azure, and Google Cloud. With global availability in over 115 regions, Atlas lets you deploy close to your users, meet compliance needs, and scale with confidence across any geography.
    Start Free
  • 1
    Google Cloud Client Libraries for Go

    Google Cloud Client Libraries for Go

    Google Cloud Client Libraries for Go

    The Cloud Client Libraries are the recommended way to access Google Cloud APIs programmatically. The Cloud Client Libraries support accessing Google Cloud services in a way that significantly reduces the boilerplate code you have to write. The libraries provide high-level API abstractions so they're easier to understand. They embrace idioms of the language, work well with the standard library, and integrate better with your codebase. By default, each API will use Google Application Default Credentials for authorization credentials used in calling the API endpoints. This will allow your application to run in many environments without requiring explicit configuration.
    Downloads: 9 This Week
    Last Update:
    See Project
  • 2
    Gocache

    Gocache

    Go cache library that brings you multiple ways to manage caches

    Guess what is Gocache? a Go cache library. This is an extendable cache library that brings you a lot of features for caching data. Multiple cache stores: actually in memory, redis, or your own custom store. A chain cache: use multiple cache with a priority order (memory then fallback to a redis shared cache for instance) A loadable cache: allow you to call a callback function to put your data back in cache. A metric cache to let you store metrics about your caches usage (hits, miss, set success, set error, ...) A marshaler to automatically marshal/unmarshal your cache values as a struct. Define default values in stores and override them when setting data. Cache invalidation by expiration time and/or using tags. Use of Generics. To begin working with the latest version of gocache, you can import the library in your project.
    Downloads: 4 This Week
    Last Update:
    See Project
  • 3
    Stash

    Stash

    An organizer for your videos, written in Go

    Stash allows you to organize and view your own collection of adult video and image files. Think of it like a private Hub site for your personal porn collection. Every video file has its own scene. Scenes can be rated and tagged with performers, tags, movies and a studio. Bookmark your favorite parts of a scene with markers. Markers can be tagged and appear in the video scrubber when viewing a scene. Images can be rated and tagged with performers, tags and a studio. Galleries are collections of images. Galleries can be automatically created from zip files and folders containing image files. Preview and view all of your scenes and galleries from your web browser on your PC, tablet or phone. Stash directly streams videos to your web browser. Stash supports streaming of a large variety of formats and codecs to most web browsers.
    Downloads: 4 This Week
    Last Update:
    See Project
  • 4
    Vegeta

    Vegeta

    HTTP load testing tool and library. It's over 9000!

    Vegeta is a versatile HTTP load testing tool built out of a need to drill HTTP services with a constant request rate. It can be used both as a command line utility and a library. You can install Vegeta using the Homebrew package manager on Mac OS X. Both the library and the CLI are versioned with SemVer v2.0.0. After v8.0.0, the two components are versioned separately to better isolate breaking changes to each. CLI releases are tagged with cli/vMAJOR.MINOR.PATCH and published on the Github releases page. As for the library, new versions are tagged with both lib/vMAJOR.MINOR.PATCH and vMAJOR.MINOR.PATCH. The latter tag is required for compatibility with go mod. The JSON format makes integration with programs that produce targets dynamically easier. Each target is one JSON object in its own line. The method and url fields are required. If present, the body field must be base64 encoded. The generated JSON Schema defines the format in detail.
    Downloads: 4 This Week
    Last Update:
    See Project
  • Simply solve complex auth. Easy for devs to set up. Easy for non-devs to use. Icon
    Simply solve complex auth. Easy for devs to set up. Easy for non-devs to use.

    Transform user access with Frontegg CIAM: login box, SSO, MFA, multi-tenancy, and 99.99% uptime.

    Custom auth drains 25% of dev time and risks 62% more breaches, stalling enterprise deals. Frontegg platform delivers a simple login box, seamless authentication (SSO, MFA, passwordless), robust multi-tenancy, and a customizable Admin Portal. Integrate fast with the React SDK, meet compliance needs, and focus on innovation.
    Start for Free
  • 5
    Centrifuge

    Centrifuge

    Real-time messaging library for Go with scalability in mind

    This library has no v1 release, API may change. Before v1 release patch version updates only have backward-compatible changes and fixes, minor version updates can have backward-incompatible API changes. Master branch can have unreleased code. Only two last Go minor versions are officially supported by this library. Centrifuge library is a real-time core of Centrifugo server. It's a general-purpose real-time messaging library for Go programming language. Real-time messaging can help create interactive applications where events are delivered to online users with minimal delay. Chats apps, live comments, multiplayer games, real-time data visualizations, collaborative tools, etc. can all be built on top of Centrifuge library. The library is built on top of efficient client-server protocol schema and exposes various real-time oriented primitives for a developer.
    Downloads: 3 This Week
    Last Update:
    See Project
  • 6
    Keybase client

    Keybase client

    Keybase Go library, client, service, OS X, iOS, Android, Electron

    Keybase is secure messaging and file-sharing. We use public key cryptography to ensure your messages stay private. Even we can’t read your chats. Keybase works for families, roommates, clubs, and groups of friends, too. Keybase connects to public identities, too. You can connect with communities from Twitter, Reddit, and elsewhere. Don’t live dangerously when it comes to documents. Keybase can store your group’s photos, videos, and documents with end-to-end encryption. You can set a timer on your most sensitive messages. This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software.
    Downloads: 3 This Week
    Last Update:
    See Project
  • 7
    Go SQLBuilder

    Go SQLBuilder

    Powerful SQL string builder library plus a zero-config ORM

    Go-SQLBuilder is a flexible and powerful SQL string builder library for the Go programming language. It aids developers in constructing SQL queries programmatically, ensuring code readability and maintainability.
    Downloads: 2 This Week
    Last Update:
    See Project
  • 8
    Interactsh

    Interactsh

    An OOB interaction gathering server and client library

    Interactsh is an open-source tool for detecting out-of-band interactions. It is a tool designed to detect vulnerabilities that cause external interactions. Interactsh Cli client requires go1.17+ to install successfully. interactsh-client with -sf, -session-file flag can be used store/read the current session information from user defined file which is useful to resume the same session to poll the interactions even after the client gets stopped or closed. Running the interactsh-client in verbose mode (v) to see the whole request and response, along with an output file to analyze afterwards. Using the server flag, interactsh-client can be configured to connect with a self-hosted Interactsh server, this flag accepts single or multiple server separated by comma. Default servers are subject to change/rotate/down at any time, thus we recommend using a self-hosted interactsh server if you are experiencing issues with the default server.
    Downloads: 2 This Week
    Last Update:
    See Project
  • 9
    XLSX

    XLSX

    Go (golang) library for reading and writing XLSX files

    xlsx is a library to simplify reading and writing the XML format used by recent version of Microsoft Excel in Go programs. Version 3.0.0 introduces some more breaking changes in the API. All methods that can return an `xlsx.File` struct now accept zero, one or many `xlsx.FileOption` functions as their final arguments. These can be used to modify the behavior of the resultant struct, in particular they replace the `…WithRowLimit` variants of those methods with the result of calling `xlsx.RowLimit` and they add the ability to define a custom backing store for the spreadsheet data to be held in whilst processing. The full API docs can be viewed using go’s built in documentation tool.
    Downloads: 2 This Week
    Last Update:
    See Project
  • Sales CRM and Pipeline Management Software | Pipedrive Icon
    Sales CRM and Pipeline Management Software | Pipedrive

    The easy and effective CRM for closing deals

    Pipedrive’s simple interface empowers salespeople to streamline workflows and unite sales tasks in one workspace. Unlock instant sales insights with Pipedrive’s visual sales pipeline and fine-tune your strategy with robust reporting features and a personalized AI Sales Assistant.
    Try it for free
  • 10
    env

    env

    A simple and zero-dependencies library to parse environment variables

    Parse environment variables to structs in Go. In Go, it’s dead simple to get the value from an environment variable. If you have a type that is not supported out of the box by the lib, you are able to use (or define) and pass custom parsers (and their associated reflect.Type) to the env.ParseWithFuncs() function. Env supports by default anything that implements the TextUnmarshaler interface. That includes things like time.Time for example. The upside is that depending on the format you need, you don't need to change anything. The downside is that if you do need time in another format, you'll need to create your own type. By default, slice types will split the environment value on ,; you can change this behavior by setting the envSeparator tag. If you set the envExpand tag, environment variables (either in ${var} or $var format) in the string will be replaced according with the actual value of the variable.
    Downloads: 2 This Week
    Last Update:
    See Project
  • 11
    gqlgen

    gqlgen

    Go generate based graphql server library

    gqlgen is a Go library for building GraphQL servers without any fuss. You get to Define your API using the GraphQL Schema Definition Language. You should never see map[string]interface{} here. We generate the boring bits, so you can focus on building your app quickly. Still not convinced enough to use gqlgen? Compare gqlgen with other Go graphql implementations. You need to tell gqlgen that it should only fetch friends if the user requested it. gqlgen will be able to automatically bind to strings or ints for models you have written yourself. gqlgen is a schema-first library, before writing code, you describe your API using the GraphQL Schema Definition Language. By default this goes into a file called schema.graphql but you can break it up into as many different files as you want. By default gqlgen will use any models in the model directory that match on name.
    Downloads: 2 This Week
    Last Update:
    See Project
  • 12
    kafka-go

    kafka-go

    Kafka library in Go

    We rely on both Go and Kafka a lot at Segment. Unfortunately, the state of the Go client libraries for Kafka at the time of this writing was not ideal. 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.
    Downloads: 2 This Week
    Last Update:
    See Project
  • 13
    koanf

    koanf

    Simple, lightweight, extensible, configuration management library

    koanf (pronounced conf; a play on the Japanese Koan) is a library for reading configurations from different sources in different formats in Go applications. It is a cleaner, lighter alternative to spf13/viper with better abstractions and extensibility, and fewer dependencies. koanf comes with built-in support for reading configuration from files, command line flags, and environment variables, and can parse JSON, YAML, TOML, and Hashicorp HCL. Any external dependencies are detached from the core into sub-packages, so only the ones that are explicitly referenced get compiled into an application. Once loaded into koanf, configuration are values queried by a delimited key path syntax. eg: app.server.port. Any delimiter can be chosen. Configuration from multiple sources can be loaded and merged into a koanf instance, for example, load from a file first and override certain values with flags from the command line.
    Downloads: 2 This Week
    Last Update:
    See Project
  • 14
    xdg

    xdg

    Go implementation of the XDG Base Directory Specification

    Provides an implementation of the XDG Base Directory Specification. The specification defines a set of standard paths for storing application files, including data and configuration files. For portability and flexibility reasons, applications should use the XDG-defined locations instead of hardcoding paths. The package also includes the locations of well-known user directories, as well as other common directories such as fonts and applications. The current implementation supports most flavors of Unix, Windows, macOS and Plan 9. On Windows, where XDG environment variables are not usually set, the package uses Known Folders as defaults. Therefore, appropriate locations are used for common folders which may have been redirected.
    Downloads: 2 This Week
    Last Update:
    See Project
  • 15
    Amazon EC2 Instance Selector

    Amazon EC2 Instance Selector

    A CLI tool and go library which recommends instance types

    A CLI tool and go library which recommends instance types based on resource criteria like vcpus and memory. There are over 270 different instance types available on EC2 which can make the process of selecting appropriate instance types difficult. Instance Selector helps you select compatible instance types for your application to run on. The command-line interface can be passed resource criteria like vcpus, memory, network performance, and much more and then return the available, matching instance types. If you are using spot instances to save on costs, it is a best practice to use multiple instances types within your auto-scaling group (ASG) to ensure your application doesn't experience downtime due to one instance type being interrupted. Instance Selector will help to find a set of instance types that your application can run on.
    Downloads: 1 This Week
    Last Update:
    See Project
  • 16
    Casbin

    Casbin

    An authorization library that supports access control models

    An authorization library that supports access control models like ACL, RBAC, ABAC for Golang, Java, C/C++, Node.js, Javascript, PHP, Laravel, Python, .NET (C#), Delphi, Rust, Ruby, Swift (Objective-C), Lua (OpenResty), Dart (Flutter) and Elixir. In Casbin, an access control model is abstracted into a CONF file based on the PERM metamodel (Policy, Effect, Request, Matchers). So switching or upgrading the authorization mechanism for a project is just as simple as modifying a configuration. Besides memory and file, Casbin policy can be stored into lots of places. Currently, dozens of databases are supported, from MySQL, Postgres, Oracle to MongoDB, Redis, Cassandra, AWS S3. Check the full supported list at: adapters. Casbin is implemented in Golang, Java, PHP and Node.js. All implementations share the same API and behaviors. You can learn Casbin once and use it everywhere. In Casbin, the policy storage is implemented as an adapter(aka middleware for Casbin).
    Downloads: 1 This Week
    Last Update:
    See Project
  • 17
    Cobra

    Cobra

    A Commander for modern Go CLI interactions

    Cobra is a library for creating powerful modern CLI applications, and at the same time a program to generate applications and command files. It provides a simple interface for creating powerful CLI interfaces, and will also generate application scaffolding so you can quickly develop your Cobra-based application. This scaffolding includes easy subcommand-based CLIs, fully POSIX-compliant flags, global, local and cascading flags, among many others. The structure of Cobra is based on commands, flags and arguments. The commands represent actions, the central point of the application; flags modify the behavior of commands; while arguments are things. With these easy-to-use concepts, users will natively understand how to use the application.
    Downloads: 1 This Week
    Last Update:
    See Project
  • 18
    Ebiten

    Ebiten

    A dead simple 2D game library for Go

    Ebiten is an open source game library for the Go programming language. Ebiten's simple API allows you to quickly and easily develop 2D games that can be deployed across multiple platforms. In Ebiten, everything is an image: the screen, data from an image file, and even offscreen items are all represented as image objects. Most rendering operations consist of drawing one image on top of another. Ebiten games work on desktop (Windows, macOS, Linux, and FreeBSD), web browsers (through WebAssembly), and even on mobile (Android and iOS)! Plus, Ebiten is implemented in pure Go on Windows, so Windows developers do not need to install a C compiler. Nintendo Switch™ is also supported! While Ebiten's drawing API is very simple, Ebiten games run very fast with GPU power. Multiple images are integrated into a texture atlas internally, and drawing operations are automatically performed in batch when possible.
    Downloads: 1 This Week
    Last Update:
    See Project
  • 19
    Functional programming library golang

    Functional programming library golang

    functional programming library for golang

    This library aims to provide a set of data types and functions that make it easy and fun to write maintainable and testable code in Golang. Write many small, testable, and pure functions, i.e. functions that produce output only depending on their input and that do not execute side effects. Offer helpers to isolate side effects into lazily executed functions (IO). Expose a consistent set of compositions to create new functions from existing ones. For each data type, there exists a small set of composition functions. These functions are called the same across all data types, so you only have to learn a small number of function names. The semantic of functions of the same name is consistent across all data types.
    Downloads: 1 This Week
    Last Update:
    See Project
  • 20
    Go gRPC Middleware

    Go gRPC Middleware

    Golang gRPC Middlewares: interceptor chaining, auth, logging, retries

    gRPC Go has support for "interceptors", i.e. middleware that is executed either on the gRPC Server before the request is passed onto the user's application logic, or on the gRPC client either around the user call. It is a perfect way to implement common patterns: auth, logging, tracing, metrics, validation, retries, rate limiting, and more, which can be great generic building blocks that make it easy to build multiple microservices. Especially for observability signals (logging, tracing, metrics) interceptors offer semi-auto-instrumentation that improves the consistency of your observability and allows great correlation techniques (e.g. exemplars and trace ID in logs). Demo-ed in examples. This repository offers ready-to-use middleware that implements gRPC interceptors with examples. In some cases, dedicated projects offer great interceptors, so this repository skips those, and we link them in the interceptors list.
    Downloads: 1 This Week
    Last Update:
    See Project
  • 21
    Grafana Operator

    Grafana Operator

    An operator for Grafana that installs and manages Grafana instances

    The Grafana Operator is a Kubernetes operator built to help you manage your Grafana instances and its resources in and outside of Kubernetes. Whether you’re running one Grafana instance or many, the Grafana Operator simplifies the processes of installing, configuring, and maintaining Grafana and its resources. Additionally, it's perfect for those who prefer to manage resources using infrastructure as code or using GitOps workflows through tools like ArgoCD and Flux CD.
    Downloads: 1 This Week
    Last Update:
    See Project
  • 22
    M3U8

    M3U8

    Parser and generator of M3U8-playlists for Apple HLS. Library for Go

    This is the most complete open-source library for parsing and generating of M3U8 playlists used in HTTP Live Streaming (Apple HLS) for internet video translations. M3U8 is a simple text format and parsing library for it must be simple too. It does not offer ways to play HLS or handle playlists over HTTP.
    Downloads: 1 This Week
    Last Update:
    See Project
  • 23
    Testcontainers Go

    Testcontainers Go

    Testcontainers for Go is a Golang library that provides a friendly API

    Testcontainers for Go is a Go package that makes it simple to create and clean up container-based dependencies for automated integration/smoke tests. The clean, easy-to-use API enables developers to programmatically define containers that should be run as part of a test and clean up those resources when the test is done.
    Downloads: 1 This Week
    Last Update:
    See Project
  • 24
    go-datastructures

    go-datastructures

    A collection of useful, performant, and threadsafe Go datastructures

    Go-datastructures is a collection of useful, performant, and threadsafe Go datastructures. Interval tree for collision in n-dimensional ranges. Implemented via a red-black augmented tree. Extra dimensions are handled in simultaneous inserts/queries to save space although this may result in suboptimal time complexity. Intersection determined using bit arrays. In a single dimension, inserts, deletes, and queries should be in O(log n) time. Bitarray used to detect existence without having to resort to hashing with hashmaps. Requires entities have a uint64 unique identifier. Two implementations exist, regular and sparse. Sparse saves a great deal of space but insertions are O(log n). There are some useful functions on the BitArray interface to detect intersection between two bitarrays. This package also includes bitmaps of length 32 and 64 that provide increased speed and O(1) for all operations by storing the bitmaps in unsigned integers rather than arrays.
    Downloads: 1 This Week
    Last Update:
    See Project
  • 25
    go-github

    go-github

    Go library for accessing the GitHub API

    go-github is a Go client library for accessing the GitHub API v3. Currently, go-github requires Go version 1.13 or greater. go-github tracks Go's version support policy. We do our best not to break older versions of Go if we don't have to, but due to tooling constraints, we don't always test older versions. If you're interested in using the GraphQL API v4, the recommended library is shurcooL/githubv4. go-github is compatible with modern Go releases in module mode. Resolve and add the package to the current development module, along with its dependencies. Alternatively the same can be achieved if you use import in a package. Construct a new GitHub client, then use the various services on the client to access different parts of the GitHub API. Some API methods have optional parameters that can be passed. Using the context package, one can easily pass cancelation signals and deadlines to various services of the client for handling a request.
    Downloads: 1 This Week
    Last Update:
    See Project
  • Previous
  • You're on page 1
  • 2
  • 3
  • 4
  • Next
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.