{"id":37115298,"url":"https://github.com/syncromatics/kvetch","last_synced_at":"2026-01-14T13:32:32.804Z","repository":{"id":56387198,"uuid":"250676317","full_name":"syncromatics/kvetch","owner":"syncromatics","description":"kvetch is a small grpc wrapper around the badger kv datastore","archived":false,"fork":false,"pushed_at":"2020-11-10T21:11:10.000Z","size":81,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":11,"default_branch":"master","last_synced_at":"2024-06-21T03:15:34.475Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/syncromatics.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null}},"created_at":"2020-03-27T23:58:39.000Z","updated_at":"2020-11-10T21:02:14.000Z","dependencies_parsed_at":"2022-08-15T17:50:22.753Z","dependency_job_id":null,"html_url":"https://github.com/syncromatics/kvetch","commit_stats":null,"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/syncromatics/kvetch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syncromatics%2Fkvetch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syncromatics%2Fkvetch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syncromatics%2Fkvetch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syncromatics%2Fkvetch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/syncromatics","download_url":"https://codeload.github.com/syncromatics/kvetch/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syncromatics%2Fkvetch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28421239,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T13:30:50.153Z","status":"ssl_error","status_checked_at":"2026-01-14T13:29:08.907Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-14T13:32:31.913Z","updated_at":"2026-01-14T13:32:32.791Z","avatar_url":"https://github.com/syncromatics.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Kvetch\n\nKvetch is a small gRPC wrapper around the [Badger](https://github.com/dgraph-io/badger) key-value datastore\n\n## Quickstart\n\nRun the Kvetch container in Docker:\n\n```bash\ndocker run --rm -v $PWD/data:/data -e DATASTORE=/data -p 7777:7777  syncromatics/kvetch:v0.5.1\n```\n\nInteract with Kvetch using `kvetchctl`:\n\n```bash\nGO111MODULE=on go get github.com/syncromatics/kvetch/cmd/kvetchctl@v0.5.1\nexport KVETCHCTL_ENDPOINT=localhost:7777 # host:port of Kvetch instance\nkvetchctl set example/1 \"first value\"\nkvetchctl set example/2 \"second value\"\nkvetchctl set example/3 \"third value\"\nkvetchctl get --prefix example/\n```\n\nIt is also possible to run both `kvetch` and `kvetchctl` in the same docker container:\n\n```bash\ndocker run -it --rm syncromatics/kvetch:v0.5.1 bash\nDATASTORE=/data ./kvetch \u0026\nexport KVETCHCTL_ENDPOINT=localhost:7777\n./kvetchctl set example/1 \"first value\"\n./kvetchctl set example/2 \"second value\"\n./kvetchctl set example/3 \"third value\"\n./kvetchctl get --prefix example/\n```\n\nMore `kvetchctl` documentation is available in [docs/kvetchctl](docs/kvetchctl/kvetchctl.md)\n\n## Configuration\n\nConfiguration is done via environmental variables. Refer to the tables below.\n\n**General Settings**\n\n| Name                        | Type     | Description                                               | Required | Default |\n| --------------------------- | -------- | --------------------------------------------------------- | -------- | ------- |\n| DATASTORE                   | string   | Directory where badger key data will be stored in.        | Yes      | `nil`   |\n| GARBAGE_COLLECTION_INTERVAL | duration | Defines how often kvetch will attempt garbage collection. | No       | 5m      |\n| PORT                        | int      | Port on which kvetch grpc service will run.               | No       | 7777    |\n| PROMETHEUS_PORT             | int      | Port for use by Prometheus for metric gathering.          | No       | 80      |\n\n**Optional BadgerDB Specific Settings** (More Detail @ https://github.com/dgraph-io/badger/blob/master/options.go)\n\nDefault values here are set to BadgerDB defaults and subject to change if package is updated. Refer to above link for more info.\n\n| Name                                               | Type  | Description                                                  | Default |\n| -------------------------------------------------- | ----- | ------------------------------------------------------------ | ------- |\n| ENABLE_TRUNCATE                                    | bool  | Truncate indicates whether value log files should be truncated to delete corrupt data, if any. | False   |\n| GARBAGE_COLLECTION_DISCARD_RATIO                   | float | Percentage of value log file that has to be expired or ready for garbage collection for that file to be eligible for garbage collection. | 0.5     |\n| IN_MEMORY                                          | bool  | Sets InMemory mode to true. Everything is stored in memory. No value/sst files on disk are created. In case of a crash all data will be lost. | False   |\n| LEVEL_ONE_SIZE                                     | int   | The maximum total size in bytes for Level 1 in the LSM.      | 20MB    |\n| LEVEL_SIZE_MULTIPLIER                              | int   | Sets the ratio between the maximum sizes of contiguous levels in the LSM. Once a level grows to be larger than this ratio allowed, the compaction process will be triggered. | 10      |\n| MAX_TABLE_SIZE                                     | int   | Sets the maximum size in bytes for each LSM table or file.   | 64MB    |\n| NUMBER_OF_LEVEL_ZERO_TABLES                        | int   | Maximum number of Level 0 tables before compaction starts.   | 5       |\n| NUMBER_OF_ZERO_LEVEL_TABLES_UNTIL_FORCE_COMPACTION | int   | Sets the number of Level 0 tables that once reached causes the DB to stall until compaction succeeds. | 10      |\n\n\n\n\n## Building\n\n[![build](https://github.com/syncromatics/kvetch/workflows/build/badge.svg)](https://github.com/syncromatics/kvetch/actions?query=workflow%3Abuild)\n[![Docker Build Status](https://img.shields.io/docker/build/syncromatics/kvetch.svg)](https://hub.docker.com/r/syncromatics/kvetch/)\n\nBuilding Kvetch requires the following:\n\n- Docker\n- [gogitver](https://github.com/syncromatics/gogitver)\n\nTo build and test the Kvetch Docker image alone:\n\n```bash\nmake test\n```\n\nTo build and package `kvetchctl`:\n\n```bash\nmake package\n```\n\nTo update generated code and documentation:\n\n```bash\nmake generate\n```\n\n## Code of Conduct\n\nWe are committed to fostering an open and welcoming environment. Please read our [code of conduct](CODE_OF_CONDUCT.md) before participating in or contributing to this project.\n\n## Contributing\n\nWe welcome contributions and collaboration on this project. Please read our [contributor's guide](CONTRIBUTING.md) to understand how best to work with us.\n\n## License and Authors\n\n[![GMV Syncromatics Engineering logo](https://secure.gravatar.com/avatar/645145afc5c0bc24ba24c3d86228ad39?size=16) GMV Syncromatics Engineering](https://github.com/syncromatics)\n\n[![license](https://img.shields.io/github/license/syncromatics/kvetch.svg)](https://github.com/syncromatics/kvetch/blob/master/LICENSE)\n[![GitHub contributors](https://img.shields.io/github/contributors/syncromatics/kvetch.svg)](https://github.com/syncromatics/kvetch/graphs/contributors)\n\nThis software is made available by GMV Syncromatics Engineering under the MIT license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsyncromatics%2Fkvetch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsyncromatics%2Fkvetch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsyncromatics%2Fkvetch/lists"}