{"id":16312695,"url":"https://github.com/stepchowfun/paxos","last_synced_at":"2025-07-12T06:34:55.725Z","repository":{"id":39921767,"uuid":"175755860","full_name":"stepchowfun/paxos","owner":"stepchowfun","description":"An implementation of single-decree Paxos.","archived":false,"fork":false,"pushed_at":"2024-09-06T05:16:23.000Z","size":303,"stargazers_count":11,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-10-11T21:48:55.021Z","etag":null,"topics":["paxos","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stepchowfun.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2019-03-15T05:39:50.000Z","updated_at":"2024-09-06T05:16:26.000Z","dependencies_parsed_at":"2023-10-03T10:55:47.252Z","dependency_job_id":"3a8448ad-fb9c-46f8-af8b-08d6c6dd9aaa","html_url":"https://github.com/stepchowfun/paxos","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stepchowfun%2Fpaxos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stepchowfun%2Fpaxos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stepchowfun%2Fpaxos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stepchowfun%2Fpaxos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stepchowfun","download_url":"https://codeload.github.com/stepchowfun/paxos/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244085006,"owners_count":20395523,"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":["paxos","rust"],"created_at":"2024-10-10T21:48:54.449Z","updated_at":"2025-03-20T21:31:55.388Z","avatar_url":"https://github.com/stepchowfun.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Paxos\n\n[![Build status](https://github.com/stepchowfun/paxos/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/stepchowfun/paxos/actions?query=branch%3Amain)\n\nThis is a reference implementation of single-decree Paxos.\n\n## Configuration\n\nBy default, the program looks for a configuration file named `config.yml` in the working directory. This file describes the cluster membership. An [example configuration](https://github.com/stepchowfun/paxos/blob/main/config.yml) is provided in this repository.\n\n## Usage\n\nFor a simple demonstration, run the following commands from separate terminals in the repository root:\n\n```sh\npaxos --node 0 --propose foo\npaxos --node 1 --propose bar\npaxos --node 2 --propose baz\n```\n\nThe cluster will likely achieve consensus immediately after two of the three nodes have been started. The chosen value will be printed to STDOUT by each node in the cluster.\n\nHere are the full usage instructions:\n\n```\nUSAGE:\n    paxos --node \u003cINDEX\u003e\n\nOPTIONS:\n    -c, --config-file \u003cPATH\u003e\n            Sets the path of the config file (default: config.yml)\n\n    -d, --data-dir \u003cPATH\u003e\n            Sets the path of the directory in which to store persistent data (default: data)\n\n    -h, --help\n            Prints help information\n\n    -i, --ip \u003cADDRESS\u003e\n            Sets the IP address to run on (if different from the configuration)\n\n    -n, --node \u003cINDEX\u003e\n            Sets the index of the node corresponding to this instance\n\n    -p, --port \u003cPORT\u003e\n            Sets the port to run on (if different from the configuration)\n\n    -v, --propose \u003cVALUE\u003e\n            Proposes a value to the cluster\n\n    -V, --version\n            Prints version information\n```\n\n## Installation instructions\n\n### Installation on macOS or Linux (AArch64 or x86-64)\n\nIf you're running macOS or Linux (AArch64 or x86-64), you can install Paxos with this command:\n\n```sh\ncurl https://raw.githubusercontent.com/stepchowfun/paxos/main/install.sh -LSfs | sh\n```\n\nThe same command can be used again to update to the latest version.\n\nThe installation script supports the following optional environment variables:\n\n- `VERSION=x.y.z` (defaults to the latest version)\n- `PREFIX=/path/to/install` (defaults to `/usr/local/bin`)\n\nFor example, the following will install Paxos into the working directory:\n\n```sh\ncurl https://raw.githubusercontent.com/stepchowfun/paxos/main/install.sh -LSfs | PREFIX=. sh\n```\n\nIf you prefer not to use this installation method, you can download the binary from the [releases page](https://github.com/stepchowfun/paxos/releases), make it executable (e.g., with `chmod`), and place it in some directory in your [`PATH`](https://en.wikipedia.org/wiki/PATH_\\(variable\\)) (e.g., `/usr/local/bin`).\n\n### Installation on Windows (AArch64 or x86-64)\n\nIf you're running Windows (AArch64 or x86-64), download the latest binary from the [releases page](https://github.com/stepchowfun/paxos/releases) and rename it to `paxos` (or `paxos.exe` if you have file extensions visible). Create a directory called `Paxos` in your `%PROGRAMFILES%` directory (e.g., `C:\\Program Files\\Paxos`), and place the renamed binary in there. Then, in the \"Advanced\" tab of the \"System Properties\" section of Control Panel, click on \"Environment Variables...\" and add the full path to the new `Paxos` directory to the `PATH` variable under \"System variables\". Note that the `Program Files` directory might have a different name if Windows is configured for a language other than English.\n\nTo update an existing installation, simply replace the existing binary.\n\n## References\n\nThe Paxos algorithm was first described in [1].\n\n1. Leslie Lamport. 1998. The part-time parliament. ACM Trans. Comput. Syst. 16, 2 (May 1998), 133-169. DOI: https://doi.org/10.1145/279227.279229\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstepchowfun%2Fpaxos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstepchowfun%2Fpaxos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstepchowfun%2Fpaxos/lists"}