{"id":13472030,"url":"https://github.com/fizzbee-io/fizzbee","last_synced_at":"2026-05-21T00:07:17.714Z","repository":{"id":229902943,"uuid":"777967579","full_name":"fizzbee-io/fizzbee","owner":"fizzbee-io","description":"Easiest-ever formal methods language! Designed for developers crafting distributed systems, microservices, and cloud applications","archived":false,"fork":false,"pushed_at":"2026-05-15T17:52:12.000Z","size":2102,"stargazers_count":313,"open_issues_count":28,"forks_count":21,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-05-15T19:59:43.913Z","etag":null,"topics":["alloy","alloy-analyzer","formal-languages","formal-methods","formal-verification","ltl","pluscal","prism","tla","tla-plus","tlaplus"],"latest_commit_sha":null,"homepage":"https://fizzbee.io","language":"Python","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/fizzbee-io.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-03-26T20:43:58.000Z","updated_at":"2026-05-15T17:52:15.000Z","dependencies_parsed_at":"2024-05-19T08:24:32.978Z","dependency_job_id":"766d624e-1e71-4777-baec-cdadb5916e86","html_url":"https://github.com/fizzbee-io/fizzbee","commit_stats":null,"previous_names":["fizzbee-io/fizzbee"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/fizzbee-io/fizzbee","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fizzbee-io%2Ffizzbee","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fizzbee-io%2Ffizzbee/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fizzbee-io%2Ffizzbee/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fizzbee-io%2Ffizzbee/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fizzbee-io","download_url":"https://codeload.github.com/fizzbee-io/fizzbee/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fizzbee-io%2Ffizzbee/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33271598,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-20T15:12:43.734Z","status":"ssl_error","status_checked_at":"2026-05-20T15:12:42.300Z","response_time":356,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["alloy","alloy-analyzer","formal-languages","formal-methods","formal-verification","ltl","pluscal","prism","tla","tla-plus","tlaplus"],"created_at":"2024-07-31T16:00:51.277Z","updated_at":"2026-05-21T00:07:17.708Z","avatar_url":"https://github.com/fizzbee-io.png","language":"Python","funding_links":[],"categories":["Python","Go"],"sub_categories":[],"readme":"# Fizzbee\n\nA formal specification language and model checker to specify distributed systems.\n\nTry out now at [Fizzbee Online Playground](https://fizzbee.io/). No installation needed.\n\n# Docs\nIf you are familiar with [TLA+](https://lamport.azurewebsites.net/tla/tla.html), this would be a quick start:\n[From TLA+ to Fizz](https://github.com/fizzbee-io/fizzbee/blob/main/docs/fizzbee-quick-start-for-tlaplus-users.md)\n\n# Installation\n\nOn Mac, with brew:\n```\nbrew tap fizzbee-io/fizzbee\nbrew install fizzbee\n```\nAlternately, prebuilt binaries are available for macOS and Linux. Please click the link below to get the latest release: [Download the latest release](https://github.com/fizzbee-io/fizzbee/releases/latest).\n\nYou can try without installation at https://fizzbee.io/play \n\n\n## Online Playground\n\nYou can try without installation at https://fizzbee.io/play.\n\n## Pre-built Binary\n\nIf you want to run the model checker locally,\nDownload a correct pre-built release from https://github.com/fizzbee-io/fizzbee/releases,\nafter extracting downloaded package, run:\n```\n./fizz path_to_spec.fizz\n```\n\nIf you are a Mac user,\nand have trouble if you download the pre-built binary through browser,\nplease check https://github.com/fizzbee-io/fizzbee/issues/152.\n\n## Build from Source\n\nDependencies:\n\n- Bazel: You need bazel installed to build. [Bazelisk](https://github.com/bazelbuild/bazelisk?tab=readme-ov-file#installation) is the recommended way to use bazel. Rename the binary to bazel and put it part of your PATH.\n- gcc: This project uses protobuf. Bazel proto_library does not use precompiled protoc, and it builds from scratch. It requires g++ compiler. `sudo apt update; sudo apt install g++`\n\nBuild:\n```\nbazel build parser/parser_bin\nbazel build //:fizzbee\n```\n\nRun:\n```\n./fizz path_to_spec.fizz  \n```\nExample:\n```\n./fizz examples/tutorials/19-for-stmt-serial-check-again/ForLoop.fizz \n```\n\nNote: Generally, you won't need to rebuild the binary, but most likely will be required after each `git pull`.\n\n### Troubleshooting on macOS\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e 1. Build error on macOS with Protobuf\u003c/strong\u003e\u003c/summary\u003e\n\nIf you see a build error in Mac like this:\n```\nERROR: /private/var/tmp/_bazel_jp/64463e3d7652188cb285edbcf54b686c/external/protobuf+/src/google/protobuf/io/BUILD.bazel:99:11: Compiling src/google/protobuf/io/printer.cc [for tool] failed: (Exit 1): cc_wrapper.sh failed: error executing CppCompile command (from target @@protobuf+//src/google/protobuf/io:printer) external/rules_cc++cc_configure_extension+local_config_cc/cc_wrapper.sh -U_FORTIFY_SOURCE -fstack-protector -Wall -Wthread-safety -Wself-assign -Wunused-but-set-parameter -Wno-free-nonheap-object ... (remaining 50 arguments skipped)\n\nUse --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging\nIn file included from external/protobuf+/src/google/protobuf/io/printer.cc:12:\nbazel-out/darwin_arm64-opt-exec-ST-d57f47055a04/bin/external/protobuf+/src/google/protobuf/io/_virtual_includes/printer/google/protobuf/io/printer.h:918:19: error: 'get\u003cstd::function\u003cbool ()\u003e, std::string, std::function\u003cbool ()\u003e\u003e' is unavailable: introduced in macOS 10.13\n    value = absl::get\u003cCallback\u003e(that.value);\n                  ^\nbazel-out/darwin_arm64-opt-exec-ST-d57f47055a04/bin/external/protobuf+/src/google/protobuf/io/_virtual_includes/printer/google/protobuf/io/printer.h:863:11: note: in instantiation of function template specialization 'google::protobuf::io::Printer::ValueImpl\u003cfalse\u003e::operator=\u003ctrue\u003e' requested here\n    *this = that;\n          ^\nbazel-out/darwin_arm64-opt-exec-ST-d57f47055a04/bin/external/protobuf+/src/google/protobuf/io/_virtual_includes/printer/google/protobuf/io/printer.h:1150:12: note: in instantiation of function template specialization 'google::protobuf::io::Printer::ValueImpl\u003cfalse\u003e::ValueImpl\u003ctrue\u003e' requested here\n    return ValueView(it-\u003esecond);\n           ^\n/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/variant:1577:22: note: 'get\u003cstd::function\u003cbool ()\u003e, std::string, std::function\u003cbool ()\u003e\u003e' has been explicitly marked unavailable here\nconstexpr const _Tp\u0026 get(const variant\u003c_Types...\u003e\u0026 __v) {\n                     ^\n1 error generated.\n```\nThis is a known issue with protobuf compilation in the recent version of protobuf.\nYou can fix it by adding the following to your `.bazelrc` file:\n\n```\nbuild --host_cxxopt=-std=c++14 --cxxopt=-std=c++14\n```\nThe .bazelrc file is located in the root directory of the project. If it does not exist, you can create it.\n\nThat is, run the following command:\n```\necho \"build --host_cxxopt=-std=c++14 --cxxopt=-std=c++14\" \u003e\u003e .bazelrc\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e 2. macOS quarantine warning for prebuilt binaries\u003c/strong\u003e\u003c/summary\u003e\n\nWhen running the `fizzbee-20250213-macos_arm` binary on macOS Sequoia 15.3 (build 24D60), you may encounter this warning:\n\n```\nApple could not verify \"python3\" is free of malware that may harm your Mac or compromise your privacy.\n```\n\nTo fix this, you can download the `macos_arm` release archive manually using this command:\n\n```bash\ncurl -sL $(curl -s https://api.github.com/repos/fizzbee-io/fizzbee/releases/latest | grep \"http.*macos_arm.tar.gz\" | awk '{print $2}' | sed 's|[\\\"\\,]*||g') | tar xzvf -\n```\n\n\u003c/details\u003e\n\n# AI Coding Assistant Skills\n\nFizzBee provides skills for AI coding assistants (Claude Code, Cursor, Gemini CLI, and other tools that support the [Agent Skills](https://agentskills.io) standard). The skills give your AI assistant built-in knowledge of the FizzBee language, how to run the model checker, how to debug specs, and how to write model-based tests — without you having to explain any of it.\n\nFour skills are included:\n\n| Skill | Auto-invoked when... |\n|---|---|\n| `fizz-spec` | Writing or editing `.fizz` specification files |\n| `fizz-check` | Verifying a spec or running the model checker |\n| `fizz-debug` | A spec fails, produces unexpected results, or is slow |\n| `fizz-mbt` | Writing Go adapter code alongside a `.fizz` spec |\n\n## Install Skills (one-time setup)\n\nIf you installed fizzbee via brew, run:\n\n```bash\nfizz install-skills\n```\n\nThis installs skills and reference docs to `~/.claude/skills/`, making them available across all your projects. To preview without making changes:\n\n```bash\nfizz install-skills --check\n```\n\nTo remove:\n\n```bash\nfizz install-skills --remove\n```\n\n**Without a local fizzbee install**, you can use the standalone script instead:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/fizzbee-io/fizzbee/main/install-claude-skills.sh | bash\n```\n\n## Keeping Skills Up to Date\n\nRe-run `fizz install-skills` after upgrading fizzbee to get updated skills and docs:\n\n```bash\nbrew upgrade fizzbee \u0026\u0026 fizz install-skills\n```\n\nOnce installed, just work normally — your AI assistant will automatically use the right skill based on what you're doing. You can also invoke them explicitly: `/fizz-spec`, `/fizz-check`, `/fizz-debug`, `/fizz-mbt`.\n\n# Development\n\n## Bazel build\nTo run all tests:\n\n```\nbazel test //...\n```\n\nTo regenerate BUILD.bazel files,\n\n```\nbazel run //:gazelle\n```\n\nTo add a new dependency,\n\n```\nbazel run //:gazelle -- update-repos github.com/your/repo\n```\nor\n```\ngazelle update-repos github.com/your/repo\n```\n\nWhen making grammar changes, run\n\n```\nantlr4 -Dlanguage=Python3 -visitor *.g4\n```\nand commit the py files.\nTODO: Automate this using gen-rule, so the generated files are not required in the repository\n\n## Cross compilation to linux\nOnly the go model checker is cross compiled to linux.\n\nOn local machine, run `bazel build //:fizzbee`.\n\nTo dockerize or to run on the linux server:\n```\nbazel build --platforms=//:linux_arm  //:fizzbee\n```\nor\n```\nbazel build --platforms=//:linux_x86  //:fizzbee\n```\n\nPython seems to work without platforms flag but unfortunately, passing platforms flag actually breaks the build.\n\n# Running the Fizz with Docker\n\nThis guide will walk you through the steps needed to build and run the application using Docker.\n\n## Clone the Repository \n\nIf you haven't already cloned the project, you can do so by running the following command:\n\n```bash\ngit clone https://github.com/fizzbee-io/fizzbee.git\ncd fizzbee\n```\n\n## Build the Docker Image\n\nTo build the Docker image, run the following command from the root directory of the project:\n\n```bash\ndocker build -t fizzbee-app .\n```\n\n## Run the Docker Container\n\nOnce the image is built, you can run the container using:\n```bash\ndocker run --rm -it fizzbee-app\n```\n\n## Using Shell Alias for Easier CLI Access\n\nTo make running CLI commands from Docker easier, you can create a shell alias. Add the following to your `.bashrc` or `.zshrc`:\n\n```bash\nalias fizz='docker run -it --rm -v $(pwd):/spec -w /spec fizzbee-app'\n```\n\nAfter adding the alias, you will need to either restart your terminal or use the source command to apply the changes immediately:\n\n```bash\nsource ~/.bashrc # or ~/.zshrc\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffizzbee-io%2Ffizzbee","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffizzbee-io%2Ffizzbee","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffizzbee-io%2Ffizzbee/lists"}