An open-source, on-prem feature flag solution

Flipt

An open-source, on-prem feature flag solution


Flipt

Flipt is an open source, on-prem feature flag application that allows you to run experiments across services in your environment.

Flipt can be deployed within your existing infrastructure so that you don't have to worry about your information being sent to a third party or the latency required to communicate across the internet.

Flipt supports use cases such as:

  • Simple on/off feature flags to toggle functionality in your applications
  • Rolling out features to a percentage of your customers
  • Using advanced segmentation to target and serve users based on custom properties that you define

Features

  • Fast. Written in Go. Optimized for performance
  • Stand alone, easy to run and configure
  • Ability to create advanced distribution rules to target segments of users
  • Native GRPC client SDKs to integrate with your applications
  • Simple REST API
  • Modern UI and debug console
  • Support for multiple databases (Postgres, MySQL, SQLite)
  • Data import and export to allow storing your flags as code

Values

  • 🔒 Security - HTTPS support. No data leaves your servers and you don't have to open your systems to the outside world to communicate with Flipt. It all runs within your existing infrastructure.
  • 🚀 Speed - Since Flipt is co-located with your existing services, you do not have to communicate across the internet which can add excessive latency and slow down your applications.
  • Simplicity - Flipt is a single binary with no external dependencies by default.
  • Privacy - No telemetry data is collected or sent by Flipt. Ever.
  • 👍 Compatability - REST, GRPC, MySQL, Postgres, SQLite.. Flipt supports it all.

Examples

Check out the examples to see how Flipt works.

Here's a basic one to get started!

Try It

Flipt Docker

Try Flipt out yourself with Docker:

❯ docker run --rm -p 8080:8080 -p 9000:9000 -t markphelps/flipt:latest

Flipt UI will now be reachable at http://localhost:8080/.

For more permanent methods of running Flipt, see the Installation section.

GRPC Clients

Licensing

There are currently two types of licenses in place for Flipt:

  1. Client License
  2. Server License

Client License

All of the code required to generate GRPC clients in other languages as well as the existing GRPC Go client are licensed under the MIT License.

This code exists in the rpc/ directory.

The client code is the code that you would integrate into your applications, which is why a more permissive license is used.

Server License

The server code is licensed under the GPL 3.0 License.

See LICENSE.

Enterprise

Need more features or support using Flipt within your Enterprise?

Please help me prioritize an Enterprise version of Flipt by filling out this short survey!

Potential Features

  • Business-friendly Licensing
  • User Management and Audit Trail
  • Multiple Environments (ex: dev/staging/prod)

Author

twitter/mark_a_phelps
Mark Phelps

Contributing

I would love your help! Before submitting a PR, please read over the Contributing guide.

No contribution is too small, whether it be bug reports/fixes, feature requests, documentation updates, or anything else that can help drive the project forward.

Contributors

Thanks goes to these wonderful people (emoji key):


Aaron Raff

💻

Rodrigo Chacon

💻

Christopher Diehl

💻

Andrew Z Allen

📖

Sebastien Armand

💻

Dat Tran

💻

Jon Perl

⚠️ 💻

Or Elimelech

💻

giddel

💻

This project follows the all-contributors specification. Contributions of any kind welcome!

Comments
  • Postgres sql failure on 1.9.0 and 1.10.0

    Postgres sql failure on 1.9.0 and 1.10.0

    Describe the Bug

    We are running flipt in k8s in multiples environment:

    • locally using rancher desktop k8s.
    • in gcp

    we are in 1.8.3 and everything is working well, but when we try to update to 1.9.0 or 1.10.0 (even on a new db), we got error.

    getting db driver for: postgres: dial tcp: lookup postgres.database.svc.cluster.local: device or resource busy

    Version Info

    1.8.2 -> working 1.8.3 -> working 1.9.0 -> error 1.10.0 -> error

    our posgres sql is postgres:12

    To Reproduce

    we just start the docker image with the env variable FLIPT_DB_URL to postgres://[email protected]:5432/flipt?sslmode=disable

    I went to the list of change, but I could not see any change related to postgres. Did we miss something or we need to change something ?

    log

    
    Version: 1.9.0
    Commit: 9938aba8e9c67aa4789bf0eec384d4113dd567d1
    Build Date: 2022-08-26T07:05:51Z
    Go Version: go1.17.11
    
    A newer version of Flipt exists at https://github.com/flipt-io/flipt/releases/tag/v1.10.0, 
    please consider updating to the latest version.
    time="2022-08-26T07:05:53Z" level=info msg="shutting down..."
    time="2022-08-26T07:05:53Z" level=error msg="getting db driver for: postgres: dial tcp: lookup postgres.database.svc.cluster.local: device or resource busy"
    
  • Add redis as storage backend

    Add redis as storage backend

    Is your feature request related to a problem? Please describe. Hi, we actively used redis as storage, and I want to add this feature. I've found this issue https://github.com/markphelps/flipt/issues/174 but it was closes because author inactivity, so can I add?

    Describe the solution you'd like I would like to add Redis as storage

  • `match` is not returning

    `match` is not returning

    Hey @markphelps—great work.

    I'm thinking about using flipt for a product I'm developing, however, I am not sure if I'm doing something wrong.

    I've created one flag called "test" with a segment that matches on all contexts and a targeting rule on set to 50% and off also set to 50%. I can't seem to get a match: true or match: false back from the server.

  • Flag variant attachment

    Flag variant attachment

    Extending variant to support attachment

    • Extend flipt.proto to support attachment in variant
    • Extend DB with the new column
    • Extend UI to support the new field

    closes https://github.com/markphelps/flipt/issues/188

  • Wired flipt.db init

    Wired flipt.db init

    flipt:latest kubernets cluster

    If I start flipt in our cluster without any modification, the flipt service starts without any problem. After looking into /var/opt/flipt there is a file flipt.db. Doing the same with a mounted pvc/volume, flipt is starting with an error.

    You are currently running the latest version of Flipt [1.9.0]!
    time="2022-07-21T23:24:57Z" level=info msg="shutting down..."
    time="2022-07-21T23:24:58Z" level=error msg="getting db driver for: sqlite3: unable to open database file: no such file or directory"
    

    Using an init container I see hat the flipt.db is not existing while startup the container. It looks like the flipt.db file is created on startup.

    So I assume flipt is creating the flipt.db on startup. BUT it will not create this file inside the mounted volume.

    Maybe flipt expect a mounted volume as an external database and will not create flipt.db?

    Because the file flipt.db is not existing on pod startup, I also cannot use an init container as workaround to copy the file to the mounted volume.

  • v1.5.0 breaking change: invalid value for string type: null

    v1.5.0 breaking change: invalid value for string type: null

    Describe the bug When i send this request to flipt /api/v1/evaluate:

    {"flag_key":"profile","entity_id":"ccf4c0a9-fc44-4478-a790-a01762efff01","context":{"cohort":null}}
    

    I'm getting the following response body as status 400:

    {"code":3,"message":"proto: (line 1:102): invalid value for string type: null","details":[]}
    

    This is a bug because this does break the default behavior and was not documented in changelog.

    Version Info version 1.5.0 as docker image.

    To Reproduce The steps are well written in the description

    Expected behavior The response should be status 200, with body similar to this:

    {
        "requestId": "728457c6-7dcd-46ff-9779-73b8988422a0",
        "entity_id":"ccf4c0a9-fc44-4478-a790-a01762efff01"
        "requestContext": {
            "cohort":null
        },
        "match": false,
        "flagKey": "profile",
        "segmentKey": "",
        "timestamp": "2022-01-25T17:13:51.337894649Z",
        "value": "",
        "requestDurationMillis": 3.700846
    }
    
    • Using postgres
  • Allow to match a segment to one of several constraints

    Allow to match a segment to one of several constraints

    Is your feature request related to a problem? Please describe. I need to toggle a feature in response to a certain parameter, e.g. I have 5 admin emails and if the API call sends one of them in the validate call, the feature should be toggled on by responding with true. Currently I create a segment for each with the constraint email to be equal and the flag returns true for these segments. But setting several emails to the segment as constraints, since it checks if the given email is equal to all of them does not work. Only if just one email is provided.

    Describe the solution you'd like Maybe set the option of the segment from always match all to be switchable to match one of. That way, I would only need to create one segment, give them all the emails as constraints and if the email matches one of the constraints, its in that segment and the feature flag would return true.

    Additional context I really enjoy your work and it is a great help. Thank you.

  • Batch evaluation

    Batch evaluation

    Maybe not a top priority right now...but do you think there's a way to batch-evaluate a set of flags?

    I plan to use the REST API instead of grpc—so like, it'd be nice if I could send a single request with a set of flags to be evaluated instead of 1 request per flag. Just to avoid all the roundtrips.

    Thoughts?

  • Change test case to show the correct format of multi domains for CORS

    Change test case to show the correct format of multi domains for CORS

    Overview

    The format of cors.allowed_origins config was changed by https://github.com/flipt-io/flipt/pull/1079 refactoring. So I change the test case to explain the format explicitly.

    Explanation

    Before the above change at v1.13.0, the format with white space worked fine since the parameter was parsed by viper.GetStringSlice here. But after the above change, it is parsed by mapstructure.StringToSliceHookFunc(",") here so the expected format was changed. I'm not sure we should fix to parse for the previous format, but changing test case to show the correct format won't be harmful.

  • Replaces 0.0.0.0 by 127.0.0.1 on the codebase

    Replaces 0.0.0.0 by 127.0.0.1 on the codebase

    As discussed in #385 this is the step 2: align the codebase to spin up the service and expect it on 127.0.0.1 instead of 0.0.0.0. To be applied whenever @markphelps release a new version, to avoid any back-compatibility issues you may have in mind.

    A new demo.gif is required.

  • Try to upgrade yarn dev dependencies

    Try to upgrade yarn dev dependencies

    Goal

    Upgrade to latest versions of JS dev dependencies

    What I Did

    ~/workspace/flipt/ui yarn-dev-deps
    ❯ yarn version
    yarn version v1.17.0
    

    yarn upgrade-interactive --latest

    To upgrade all dependencies

    What Happens

    When I run yarn dev, it opens the browser but then I get:

    Uncaught TypeError: Cannot assign to read only property 'exports' of object '#<Object>'
    

    In the console

    What Should Happen

    No JS errors in the console when running yarn dev

  • chore: use minted GITHUB_TOKEN for task setup to avoid ratelimits

    chore: use minted GITHUB_TOKEN for task setup to avoid ratelimits

    use fresh minted GITHUB_TOKEN when calling setup-task in workflows to avoid GitHub rate limits causing jobs to fail

    ex: https://github.com/flipt-io/flipt/actions/runs/3832718965/jobs/6523354201#step:6:5

    https://github.com/arduino/setup-task#repo-token

  • chore: Release check refactor

    chore: Release check refactor

    • Performs some refactoring i've wanted to do for awhile, moving the release / version check mechanism out of main (mostly) and adding some tests around it
    • Also checks for rc in version to determine if its a proper release or not
  • feat(http): support CSRF provention

    feat(http): support CSRF provention

    Fixes FLI-116

    This adds support for a configurable CSRF key to be added and protection to be enforced.

    When configured (non-empty authentication.crsf.key) a CSRF credential will be configured and stored in a cookie when accessing any of the following API prefixes:

    • /api/v1
    • /auth/v1
    • /meta

    Attempts to use non-safe (all bar GET or HEAD) HTTP methods will require an acquired CSRF token be presented. The token is verifiable via the CSRF credentials stored in the cookie (signature verification is used).

    The token can be acquired via a response header obtained on any route beneath /meta. The UI performs a /meta/info request in each load. This is where the current UI is obtaining it and storing it in its Vuex store.

    The UI has been updated to obtain the token and present it on all subsequent API requests. The new UI will need a similar adjustment to be made to support CSRF.

    This method of prevention ensures that a malicious request cannot be crafted from another domain / origin and directed over to Flipt to perform a malicious operation (e.g. delete or update a flag or authentication).

    There is one caveat, and that is the enforcement is only performed when the request contains an Origin header. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin

    This is taken from the MDN link above:


    Broadly speaking, user agents add the Origin request header to:


    This ensures we enforce the policy for browser user-agents. However, not for other clients (e.g. our SDKs). Thereby avoiding having to teach clients to perform the same CSRF prevention, which should be an unnecessary security step for our SDKs. As, the attack is performed by manipulating a user's browser and cookie-based authentication.

  • posibility to configure Zap logger keys

    posibility to configure Zap logger keys

    Problem

    Great thing to use Zap as logger. Unfortunately the logger keys are hardcoded in main.go. At least GCP looging cannot understand the logger keys. Alle entries at now are logged at INFO severity. Bildschirmfoto von 2023-01-03 08-32-40

    Ideal Solution

    So it would be great to set the complete Zap logger config like this:

    level: debug
    development: false  # enables stacktrace!
    encoding: json  # or 'console'
    outputPaths:
      - stdout
    errorOutputPaths:
      - stderr
    encoderConfig:
      timeKey: time
      levelKey: level
      messageKey: msg
      levelEncoder: capital  # or 'lower'
      timeEncoder: iso8601  # o 'rfc3339'
      callerEncoder: full
    

    Which then looks like this:
    Bildschirmfoto von 2023-01-03 08-39-47

  • chore(deps-dev): bump eslint from 8.28.0 to 8.31.0 in /ui

    chore(deps-dev): bump eslint from 8.28.0 to 8.31.0 in /ui

    Bumps eslint from 8.28.0 to 8.31.0.

    Release notes

    Sourced from eslint's releases.

    v8.31.0

    Features

    • 52c7c73 feat: check assignment patterns in no-underscore-dangle (#16693) (Milos Djermanovic)
    • b401cde feat: add options to check destructuring in no-underscore-dangle (#16006) (Morten Kaltoft)
    • 30d0daf feat: group properties with values in parentheses in key-spacing (#16677) (Francesco Trotta)

    Bug Fixes

    • 35439f1 fix: correct syntax error in prefer-arrow-callback autofix (#16722) (Francesco Trotta)
    • 87b2470 fix: new instance of FlatESLint should load latest config file version (#16608) (Milos Djermanovic)

    Documentation

    • 4339dc4 docs: Update README (GitHub Actions Bot)
    • 4e4049c docs: optimize code block structure (#16669) (Sam Chen)
    • 54a7ade docs: do not escape code blocks of formatters examples (#16719) (Sam Chen)
    • e5ecfef docs: Add function call example for no-undefined (#16712) (Elliot Huffman)
    • a3262f0 docs: Add mastodon link (#16638) (Amaresh S M)
    • a14ccf9 docs: clarify files property (#16709) (Sam Chen)
    • 3b29eb1 docs: fix npm link (#16710) (Abdullah Osama)
    • a638673 docs: fix search bar focus on Esc (#16700) (Shanmughapriyan S)
    • f62b722 docs: country flag missing in windows (#16698) (Shanmughapriyan S)
    • 4d27ec6 docs: display zh-hans in the docs language switcher (#16686) (Percy Ma)
    • 8bda20e docs: remove manually maintained anchors (#16685) (Percy Ma)
    • b68440f docs: User Guide Getting Started expansion (#16596) (Ben Perlmutter)

    Chores

    • 65d4e24 chore: Upgrade @​eslint/eslintrc@​1.4.1 (#16729) (Brandon Mills)
    • 8d93081 chore: fix CI failure (#16721) (Sam Chen)
    • 8f17247 chore: Set up automatic updating of README (#16717) (Nicholas C. Zakas)
    • 4cd87cb ci: bump actions/stale from 6 to 7 (#16713) (dependabot[bot])
    • fd20c75 chore: sort package.json scripts in alphabetical order (#16705) (Darius Dzien)
    • 10a5c78 chore: update ignore patterns in eslint.config.js (#16678) (Milos Djermanovic)

    v8.30.0

    Features

    • 075ef2c feat: add suggestion for no-return-await (#16637) (Daniel Bartholomae)
    • 7190d98 feat: update globals (#16654) (Sébastien Règne)

    Bug Fixes

    • 1a327aa fix: Ensure flat config unignores work consistently like eslintrc (#16579) (Nicholas C. Zakas)
    • 9b8bb72 fix: autofix recursive functions in no-var (#16611) (Milos Djermanovic)

    Documentation

    • 6a8cd94 docs: Clarify Discord info in issue template config (#16663) (Nicholas C. Zakas)
    • ad44344 docs: CLI documentation standardization (#16563) (Ben Perlmutter)
    • 293573e docs: fix broken line numbers (#16606) (Sam Chen)
    • fa2c64b docs: use relative links for internal links (#16631) (Percy Ma)
    • 75276c9 docs: reorder options in no-unused-vars (#16625) (Milos Djermanovic)
    • 7276fe5 docs: Fix anchor in URL (#16628) (Karl Horky)
    • 6bef135 docs: don't apply layouts to html formatter example (#16591) (Tanuj Kanti)
    • dfc7ec1 docs: Formatters page updates (#16566) (Ben Perlmutter)

    ... (truncated)

    Changelog

    Sourced from eslint's changelog.

    v8.31.0 - December 31, 2022

    • 65d4e24 chore: Upgrade @​eslint/eslintrc@​1.4.1 (#16729) (Brandon Mills)
    • 35439f1 fix: correct syntax error in prefer-arrow-callback autofix (#16722) (Francesco Trotta)
    • 87b2470 fix: new instance of FlatESLint should load latest config file version (#16608) (Milos Djermanovic)
    • 8d93081 chore: fix CI failure (#16721) (Sam Chen)
    • 4339dc4 docs: Update README (GitHub Actions Bot)
    • 8f17247 chore: Set up automatic updating of README (#16717) (Nicholas C. Zakas)
    • 4e4049c docs: optimize code block structure (#16669) (Sam Chen)
    • 54a7ade docs: do not escape code blocks of formatters examples (#16719) (Sam Chen)
    • 52c7c73 feat: check assignment patterns in no-underscore-dangle (#16693) (Milos Djermanovic)
    • e5ecfef docs: Add function call example for no-undefined (#16712) (Elliot Huffman)
    • a3262f0 docs: Add mastodon link (#16638) (Amaresh S M)
    • 4cd87cb ci: bump actions/stale from 6 to 7 (#16713) (dependabot[bot])
    • a14ccf9 docs: clarify files property (#16709) (Sam Chen)
    • 3b29eb1 docs: fix npm link (#16710) (Abdullah Osama)
    • fd20c75 chore: sort package.json scripts in alphabetical order (#16705) (Darius Dzien)
    • a638673 docs: fix search bar focus on Esc (#16700) (Shanmughapriyan S)
    • f62b722 docs: country flag missing in windows (#16698) (Shanmughapriyan S)
    • 4d27ec6 docs: display zh-hans in the docs language switcher (#16686) (Percy Ma)
    • 8bda20e docs: remove manually maintained anchors (#16685) (Percy Ma)
    • b401cde feat: add options to check destructuring in no-underscore-dangle (#16006) (Morten Kaltoft)
    • b68440f docs: User Guide Getting Started expansion (#16596) (Ben Perlmutter)
    • 30d0daf feat: group properties with values in parentheses in key-spacing (#16677) (Francesco Trotta)
    • 10a5c78 chore: update ignore patterns in eslint.config.js (#16678) (Milos Djermanovic)

    v8.30.0 - December 16, 2022

    • f2c4737 chore: upgrade @​eslint/eslintrc@​1.4.0 (#16675) (Milos Djermanovic)
    • 1a327aa fix: Ensure flat config unignores work consistently like eslintrc (#16579) (Nicholas C. Zakas)
    • 075ef2c feat: add suggestion for no-return-await (#16637) (Daniel Bartholomae)
    • ba74253 chore: standardize npm script names per #14827 (#16315) (Patrick McElhaney)
    • 6a8cd94 docs: Clarify Discord info in issue template config (#16663) (Nicholas C. Zakas)
    • 0d9af4c ci: fix npm v9 problem with file: (#16664) (Milos Djermanovic)
    • 7190d98 feat: update globals (#16654) (Sébastien Règne)
    • ad44344 docs: CLI documentation standardization (#16563) (Ben Perlmutter)
    • 90c9219 refactor: migrate off deprecated function-style rules in all tests (#16618) (Bryan Mishkin)
    • 9b8bb72 fix: autofix recursive functions in no-var (#16611) (Milos Djermanovic)
    • 293573e docs: fix broken line numbers (#16606) (Sam Chen)
    • fa2c64b docs: use relative links for internal links (#16631) (Percy Ma)
    • 75276c9 docs: reorder options in no-unused-vars (#16625) (Milos Djermanovic)
    • 7276fe5 docs: Fix anchor in URL (#16628) (Karl Horky)
    • 6bef135 docs: don't apply layouts to html formatter example (#16591) (Tanuj Kanti)
    • dfc7ec1 docs: Formatters page updates (#16566) (Ben Perlmutter)
    • 8ba124c docs: update the prefer-const example (#16607) (Pavel)
    • e6cb05a docs: fix css leaking (#16603) (Sam Chen)

    v8.29.0 - December 2, 2022

    • 0311d81 docs: Configuring Plugins page intro, page tweaks, and rename (#16534) (Ben Perlmutter)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Flagr is a feature flagging, A/B testing and dynamic configuration microservice
Flagr is a feature flagging, A/B testing and dynamic configuration microservice

Introduction Flagr is an open source Go service that delivers the right experience to the right entity and monitors the impact. It provides feature fl

Dec 25, 2022
Flagr is an open source Go service that delivers the right experience to the right entity and monitors the impact.
Flagr is an open source Go service that delivers the right experience to the right entity and monitors the impact.

Flagr is an open source Go service that delivers the right experience to the right entity and monitors the impact. It provides feature flags, experimentation (A/B testing), and dynamic configuration. It has clear swagger REST APIs for flags management and flag evaluation.

Dec 25, 2022
CasaOS - A simple, easy-to-use, elegant open-source home server system.
CasaOS - A simple, easy-to-use, elegant open-source home server system.

CasaOS - A simple, easy-to-use, elegant open-source home server system. CasaOS is an open-source home server system based on the Docker ecosystem and

Jan 8, 2023
The Zuri Core is an open-source API that serves as the backend and backbone of Zuri Chat
The Zuri Core is an open-source API that serves as the backend and backbone of Zuri Chat

The Zuri Core is an open-source API that serves as the backend and backbone of Zuri Chat

Dec 26, 2022
RoadRunner: an open-source high-performance PHP application server, load balancer, and process manager
RoadRunner: an open-source high-performance PHP application server, load balancer, and process manager

RoadRunner is an open-source (MIT licensed) high-performance PHP application server, load balancer, and process manager. It supports running as a serv

Jan 13, 2022
Go package for the BeagleBone open source hardware

go-beaglebone Go package for the BeagleBone open source hardware Also check out https://github.com/SpaceLeap/go-embedded This package builds on top of

Jul 6, 2019
Open platform to collect and prioritize product feedback
Open platform to collect and prioritize product feedback

Fider A platform to collect and organize customer feedback. Let your customers share, vote and discuss on suggestions they have to make your product e

Jan 1, 2023
A feature flag solution, with only a YAML file in the backend (S3, GitHub, HTTP, local file ...), no server to install, just add a file in a central system and refer to it. 🎛️
A feature flag solution, with only a YAML file in the backend (S3, GitHub, HTTP, local file ...), no server to install, just add a file in a central system and refer to it. 🎛️

??️ go-feature-flag A feature flag solution, with YAML file in the backend (S3, GitHub, HTTP, local file ...). No server to install, just add a file i

Dec 29, 2022
Package varflag implements command-line flag parsing into vars.Variables for easy type handling with additional flag types.

varflag Package flag implements command-line flag parsing into vars.Variables for easy type handling with additional flag types. varflag Flags String

Aug 2, 2022
Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core network solution.
Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core network solution.

Connecting the Next Billion People Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core

Dec 31, 2022
A Micro-UTP, plug-able sanity checker for any on-prem JFrog platform instance

hello-frog About this plugin This plugin is a template and a functioning example for a basic JFrog CLI plugin. This README shows the expected structur

Dec 7, 2021
A simple application, demo at this point, on how to pull a backup from Collibra on prem (say for Cohesity backup)
A simple application, demo at this point, on how to pull a backup from Collibra on prem (say for Cohesity backup)

go-get-collibra-backup Introduction This repository is a very simple go application that's intended, at this point, more of a demonstration about how

Dec 10, 2021
golang feature toggle library - a library to help make golang feature toggling clean and easy

toggle supports env_variable backed toggling. It can also be updated via a pubsub interface (tested w/ redis) 2 engines for toggle backing are include

Mar 29, 2022
SigNoz helps developers monitor their applications & troubleshoot problems, an open-source alternative to DataDog, NewRelic, etc. 🔥 🖥. 👉 Open source Application Performance Monitoring (APM) & Observability tool
SigNoz helps developers monitor their applications & troubleshoot problems, an open-source alternative to DataDog, NewRelic, etc. 🔥 🖥.   👉  Open source Application Performance Monitoring (APM) & Observability tool

Monitor your applications and troubleshoot problems in your deployed applications, an open-source alternative to DataDog, New Relic, etc. Documentatio

Sep 24, 2021
An open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developersAn open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developers
An open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developersAn open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developers

Developer-oriented Continuous Delivery Product ⁣ English | 简体中文 Table of Contents Zadig Table of Contents What is Zadig Quick start How to use? How to

Oct 19, 2021
Upterm is an open-source solution for sharing terminal sessions instantly over the public internet via secure tunnels.
Upterm is an open-source solution for sharing terminal sessions instantly over the public internet via secure tunnels.

Upterm is an open-source solution for sharing terminal sessions instantly over the public internet via secure tunnels.

Jan 8, 2023
Hybridnet is an open source container networking solution, integrated with Kubernetes and used officially by following well-known PaaS platforms

Hybridnet What is Hybridnet? Hybridnet is an open source container networking solution, integrated with Kubernetes and used officially by following we

Jan 4, 2023
Scout is a standalone open source software solution for DIY video security.
Scout is a standalone open source software solution for DIY video security.

scout Scout is a standalone open source software solution for DIY video security. https://www.jonoton-innovation.com Features No monthly fees! Easy In

Oct 25, 2022
Argparse for golang. Just because `flag` sucks

Golang argparse Let's be honest -- Go's standard command line arguments parser flag terribly sucks. It cannot come anywhere close to the Python's argp

Dec 28, 2022