{"id":19900082,"url":"https://github.com/m-lab/locate","last_synced_at":"2025-06-28T09:37:14.743Z","repository":{"id":37072964,"uuid":"250015286","full_name":"m-lab/locate","owner":"m-lab","description":"M-Lab Locate Service, a load balancer providing consistent “expected measurement quality” using access control","archived":false,"fork":false,"pushed_at":"2025-06-21T03:53:05.000Z","size":10028,"stargazers_count":9,"open_issues_count":13,"forks_count":4,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-06-21T17:31:49.842Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/m-lab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-03-25T15:23:10.000Z","updated_at":"2025-06-12T22:11:35.000Z","dependencies_parsed_at":"2025-05-17T07:28:11.577Z","dependency_job_id":"58b4da4b-94b2-4d7e-84da-ea2c49875f5c","html_url":"https://github.com/m-lab/locate","commit_stats":{"total_commits":216,"total_committers":9,"mean_commits":24.0,"dds":0.6527777777777778,"last_synced_commit":"7cb09588e4fd302ce9f54bc526915b44b9405aed"},"previous_names":[],"tags_count":105,"template":false,"template_full_name":null,"purl":"pkg:github/m-lab/locate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-lab%2Flocate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-lab%2Flocate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-lab%2Flocate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-lab%2Flocate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/m-lab","download_url":"https://codeload.github.com/m-lab/locate/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-lab%2Flocate/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261998781,"owners_count":23242486,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":"2024-11-12T20:11:06.314Z","updated_at":"2025-06-28T09:37:14.728Z","avatar_url":"https://github.com/m-lab.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# locate\n\n[![Version](https://img.shields.io/github/tag/m-lab/locate.svg)](https://github.com/m-lab/locate/releases) [![Build Status](https://travis-ci.com/m-lab/locate.svg?branch=master)](https://travis-ci.com/m-lab/locate) [![Coverage Status](https://coveralls.io/repos/m-lab/locate/badge.svg?branch=master)](https://coveralls.io/github/m-lab/locate?branch=master) [![GoDoc](https://godoc.org/github.com/m-lab/locate?status.svg)](https://godoc.org/github.com/m-lab/locate) [![Go Report Card](https://goreportcard.com/badge/github.com/m-lab/locate)](https://goreportcard.com/report/github.com/m-lab/locate)\n\nM-Lab Locate Service, a load balancer providing consistent “expected\nmeasurement quality” using access control.\n\n## Local Development\n\n### Secret Manager\n\nTypically the locate service will run within a GCP environment, either AppEngine\nor GKE. In these cases, the locate service reads signer and verifier keys from\nGCP's secret manager. This dependency is not needed for local development.\n\nCreate JSON Web Keys for local development:\n\n```sh\njwk-keygen --use=sig --alg=EdDSA --kid=localdev_20220415\n```\n\nYou may reuse the same key for signer and verifier, or create multiple keys.\n\n```sh\n./locate \\\n    -key-source=local \\\n    -signer-secret-name ./jwk_sig_EdDSA_localdev_20220415 \\\n    -verify-secret-name ./jwk_sig_EdDSA_localdev_20220415.pub\n```\n\nNow you may visit localhost:8080 in your browser to see a response generating\n`access_token`s using these keys. Of course, the URLs returns will not be valid\nfor the public platform.\n\n### Redis\n\nA `docker-compose` configuration file is provided to run a local instance of the\nlocate service along with Redis.\n\nIn the root directory of the \"locate\" project, start a local build using default\narguments and precomputed JSON Web Keys.\n\n```sh\ndocker-compose up\n```\n\nTo connect with the local redis instance, run the `cmd/heartbeat` command or use\nthe `redis-cli` command from the terminal.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm-lab%2Flocate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fm-lab%2Flocate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm-lab%2Flocate/lists"}