{"id":49488371,"url":"https://github.com/algorandecosystem/algokit-core","last_synced_at":"2026-05-01T03:03:32.751Z","repository":{"id":268456426,"uuid":"903496936","full_name":"algorandecosystem/algokit-core","owner":"algorandecosystem","description":"Rust implementations of core Algorand functionality that is exposed to other languages via FFIs.","archived":false,"fork":false,"pushed_at":"2026-04-15T19:01:46.000Z","size":454515,"stargazers_count":15,"open_issues_count":38,"forks_count":10,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-04-15T20:29:03.767Z","etag":null,"topics":["algokit","experimetal","lib"],"latest_commit_sha":null,"homepage":"https://algorandfoundation.github.io/algokit-core/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/algorandecosystem.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","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-12-14T18:44:11.000Z","updated_at":"2026-04-15T18:45:20.000Z","dependencies_parsed_at":"2025-01-31T18:28:32.734Z","dependency_job_id":"72697c6a-08fa-4225-8a7d-17c6ebaae956","html_url":"https://github.com/algorandecosystem/algokit-core","commit_stats":null,"previous_names":["joe-p/algo-models-rs","joe-p/algorand-rust-ffis","algorandfoundation/algorand-rust-ffis","algorandfoundation/algokit-core","algorandecosystem/algokit-core"],"tags_count":189,"template":false,"template_full_name":null,"purl":"pkg:github/algorandecosystem/algokit-core","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/algorandecosystem%2Falgokit-core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/algorandecosystem%2Falgokit-core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/algorandecosystem%2Falgokit-core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/algorandecosystem%2Falgokit-core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/algorandecosystem","download_url":"https://codeload.github.com/algorandecosystem/algokit-core/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/algorandecosystem%2Falgokit-core/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32483405,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["algokit","experimetal","lib"],"created_at":"2026-05-01T03:03:28.130Z","updated_at":"2026-05-01T03:03:32.746Z","avatar_url":"https://github.com/algorandecosystem.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Algorand-Rust-FFIs\n\nThis is a cargo workspace for Rust implementations of core Algorand functionality that is exposed to other languages via FFIs.\n\n## Principles\n\n### Idiomatic Rust\n\nThe core library should be idiomatic Rust. This is essential for maintainability and ease of use. This may result in some extra wrappers around the Rust library for the FFI bindings because the foreign languages and/or their binding generators might not support all the Rust features.\n\n### Foreign Interface Consistency\n\nAll the foreign bindings should have consistent interfaces. The way things are done in Python should be the same as the way things are done in JavaScript. Finding the lowest common denominator between languages is the goal, which comes with the trade-off that we might not be fully leveraging foreign language features.\n\n### Purely Functional Foreign Interfaces\n\nThe exported interfaces should be purely functional without any state owned by Rust. This is essential for maintaining consistency between the foreign bindings and memory safety. Some foreign languages, such as `kotlin` or `go` do not support integrating Rust-owned objects into garbage collection. If Rust owned stateful objects, users of these languages would need to manually manage the lifetimes of the objects or potentially leak memory. See [this document](/docs/research/ffi_garbage_collection.md) for more information on garbage collection.\n\n## Crates\n\n- [algokit_transact](./crates/algokit_transact) - Currently a spike to determine feasibility of using UniFFI and wasm-pack. Handles msgpack encoding and decoding of Algorand transactions and allows attaching signatures to transactions.\n\n## ADRs\n\n[./docs/decisions](./docs/decisions) contains the ADRs for this project. Specific implementations might have their own ADRs in their respective directories.\n\n## Research\n\n[./docs/research](./docs/research/) contains various Markdown documents summarize research related to this project\n\n## Contributing\n\n## Build Scripts\n\n`cargo pkg` will run the build script. For example: `cargo pkg transact kt` builds `algokit_transact` for `kotlin`.\n\nThe scripts are defined in [tools/build_pkgs] for each language.\n\n### Learning Resources\n\nIf you are new to Rust or UniFFI, check out the [learning resources document](./docs/contributing/learning_resources.md)\n\n### Contributing Guide\n\nSee the [contributing guide](./docs/contributing/contributing_guide.md) for recommended editors settings and other guidelines for contribution.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falgorandecosystem%2Falgokit-core","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falgorandecosystem%2Falgokit-core","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falgorandecosystem%2Falgokit-core/lists"}