{"id":27745900,"url":"https://github.com/MercuryTechnologies/hs-temporal-sdk","last_synced_at":"2025-04-28T20:01:58.831Z","repository":{"id":174362539,"uuid":"639920912","full_name":"MercuryTechnologies/hs-temporal-sdk","owner":"MercuryTechnologies","description":"Unofficial Temporal Haskell SDK","archived":false,"fork":false,"pushed_at":"2025-04-24T17:26:35.000Z","size":10889,"stargazers_count":29,"open_issues_count":6,"forks_count":0,"subscribers_count":48,"default_branch":"main","last_synced_at":"2025-04-27T07:49:09.950Z","etag":null,"topics":["haskell","haskell-library","temporal"],"latest_commit_sha":null,"homepage":"https://temporal.io","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MercuryTechnologies.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":"2023-05-12T14:27:01.000Z","updated_at":"2025-04-24T17:24:01.000Z","dependencies_parsed_at":"2023-06-15T07:00:18.103Z","dependency_job_id":"2903105a-43c9-4acc-8a82-3f0efb96a147","html_url":"https://github.com/MercuryTechnologies/hs-temporal-sdk","commit_stats":null,"previous_names":["mercurytechnologies/hs-temporal-sdk"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MercuryTechnologies%2Fhs-temporal-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MercuryTechnologies%2Fhs-temporal-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MercuryTechnologies%2Fhs-temporal-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MercuryTechnologies%2Fhs-temporal-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MercuryTechnologies","download_url":"https://codeload.github.com/MercuryTechnologies/hs-temporal-sdk/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251380914,"owners_count":21580338,"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":["haskell","haskell-library","temporal"],"created_at":"2025-04-28T20:00:49.708Z","updated_at":"2025-04-28T20:01:58.673Z","avatar_url":"https://github.com/MercuryTechnologies.png","language":"Haskell","funding_links":[],"categories":["Haskell"],"sub_categories":["Blog posts"],"readme":"\u003cdiv class=\"title-block\" style=\"text-align: center;\" align=\"center\"\u003e\n\n\u003cimg title=\"logo\" alt=\"(Unofficial) Temporal Haskell SDK Logo\" src=\"./docs/hs.png\" /\u003e\n\n\u003ca href=\"./LICENSE\"\u003e\u003cimg title=\"license\" alt=\"License - BSD 3-Clause\" src=\"https://img.shields.io/badge/License-BSD_3--Clause-green?style=for-the-badge\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://mercurytechnologies.github.io/hs-temporal-sdk/\"\u003e\u003cimg title=\"haddocks\" alt=\"Haskell Documentation\" src=\"https://img.shields.io/badge/haddocks-5e5086?style=for-the-badge\u0026logo=haskell\" /\u003e\u003c/a\u003e\n\n\u003c/div\u003e\n\n[Temporal](https://temporal.io) is a durable execution system that transparently makes your code durable, fault-tolerant, and simple.\n\nThis project provides an unofficial Haskell SDK along with supporting packages for authoring workflows and activities.\n\n\u003e [!WARNING]\n\u003e This project is still under heavy development. It is in production use at [Mercury](https://mercury.com), but we currently make no stability guarantees for external users of the project.\n\nFor documentation and samples, see:\n\n- [General Temporal docs](https://docs.temporal.io)\n\n## Packages\n\nThis monorepo contains the following packages:\n\n| Subfolder | Package | Description |\n|-----------|---------|-------------|\n| [`sdk/`](sdk/)                                    | `temporal-sdk`               | The developer-facing SDK package. Use this to author and execute Temporal Workflows and Activities. |\n| [`core/`](core/)                                  | `temporal-sdk-core`          | Core FFI bindings that interface with the rust core library. |\n| [`codec-encryption/`](codec-encryption/)          | `temporal-codec-encryption`  | A simple implementation of at-rest encryption for payloads. |\n| [`codec-server`](codec-server/)                   | `temporal-sdk-codec-server`  | A WAI middleware to transform payloads for use with the Temporal Web UI.\n| [`optimal-codec/`](optimal-codec/)                | `temporal-sdk-optimal-codec` | Given a set of preferred codecs for Activity and Workflow inputs and outputs, choose the optimal codec for each value. |\n| [`protos/`](protos/)                              | `temporal-api-protos`        | Raw protocol buffer modules for exotic use cases. |\n\n## Development Environment\n\nThis project uses [Nix](https://nixos.org/guides/nix-package-manager.html) to manage the development environment and dependencies. Nix ensures a reproducible and consistent build environment across different systems.\n\n\u003e [!NOTE]\n\u003e Stack support is for convenience, but not guaranteed by CI to compile consistently.\n\nIt is recommended to set up [direnv](https://direnv.net/) and [nix-direnv](https://github.com/nix-community/nix-direnv) to automatically load the Nix environment when you enter the project directory. After installing `direnv`, run the following command in the project root to bootstrap the development environment.\n\n```bash\ndirenv allow\n```\n\n### Useful Development Commands\n\n`nix develop --impure` enters the development shell for the Haskell program if you aren't using `direnv`. This shell includes the necessary tools and dependencies for development, such as GHC, Cabal, and the Rust toolchain.\n\nInside the development shell, you can use cabal commands as usual. Cabal is the official build tool for this project.\n\n- `nix build .#{packageName}-{ghcVersion}` builds the given package for a given GHC version.\n- `nix build .#temporal_bridge` builds the Rust library (`temporal_bridge`) that provides bindings to the Temporal Core library.\n- `devenv up` starts a local Temporal server for development and testing purposes.\n\nThe flake.nix file defines different shells for each supported GHC version (`ghc96`, `ghc98`, `ghc910`). You can enter the shell for a specific GHC version with the following command:\n\n```bash\nnix develop .#{ghcVersion} --impure\n```\n\nReplace `{ghcVersion}` with the desired GHC version (e.g., `ghc96`, `ghc98`, `ghc910`).\n\n\u003e [!NOTE]\n\u003e The first time you run nix develop or nix build, Nix will download and build all the necessary dependencies, which may take some time. Subsequent runs will be faster as Nix will reuse the cached dependencies.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMercuryTechnologies%2Fhs-temporal-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FMercuryTechnologies%2Fhs-temporal-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMercuryTechnologies%2Fhs-temporal-sdk/lists"}