{"id":20388379,"url":"https://github.com/actyx/actyx","last_synced_at":"2025-04-12T21:29:45.507Z","repository":{"id":196598191,"uuid":"393963530","full_name":"Actyx/Actyx","owner":"Actyx","description":"Local-First Cooperation based on Event Sourcing","archived":false,"fork":false,"pushed_at":"2024-05-15T13:05:24.000Z","size":106750,"stargazers_count":252,"open_issues_count":62,"forks_count":6,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-30T04:13:41.556Z","etag":null,"topics":["event-sourcing","libp2p","local-first","p2p","peer-to-peer"],"latest_commit_sha":null,"homepage":"https://developer.actyx.com","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/Actyx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.Apache_2.0","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}},"created_at":"2021-08-08T13:08:56.000Z","updated_at":"2024-10-24T17:26:53.000Z","dependencies_parsed_at":"2024-11-15T03:20:07.519Z","dependency_job_id":null,"html_url":"https://github.com/Actyx/Actyx","commit_stats":null,"previous_names":["actyx/actyx"],"tags_count":80,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Actyx%2FActyx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Actyx%2FActyx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Actyx%2FActyx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Actyx%2FActyx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Actyx","download_url":"https://codeload.github.com/Actyx/Actyx/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248634622,"owners_count":21137081,"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":["event-sourcing","libp2p","local-first","p2p","peer-to-peer"],"created_at":"2024-11-15T03:09:33.679Z","updated_at":"2025-04-12T21:29:45.486Z","avatar_url":"https://github.com/Actyx.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# Actyx\n\n[![PRs welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](#contributing)\n[![discord](https://img.shields.io/discord/697349510409617408?style=flat-square)](https://discord.gg/262yJhc)\n[![license](https://img.shields.io/crates/l/actyx_sdk?style=flat-square)](#licensing)\n\n[![dockerhub](https://img.shields.io/docker/v/actyx/actyx/latest?label=Actyx%20version\u0026style=flat-square)](https://hub.docker.com/repository/docker/actyx/actyx)\n[![Rust SDK](https://img.shields.io/crates/v/actyx_sdk?label=Rust%20SDK\u0026style=flat-square)](https://crates.io/crates/actyx_sdk)\n[![JS/TS SDK](https://img.shields.io/npm/v/@actyx/sdk?label=JS%2FTS%20SDK\u0026style=flat-square)](https://www.npmjs.com/package/@actyx/sdk)\n\n![commits](https://img.shields.io/github/commit-activity/m/Actyx/Actyx?style=flat-square)\n![contributors](https://img.shields.io/github/contributors/Actyx/Actyx?style=flat-square)\n\n---\n\n\u003cimg src=\"web/Actyx-Icon-Transparent.svg\" height=\"128pt\" /\u003e    \u003ca href=\"https://www.local-first-cooperation.org/\"\u003e\u003cimg src=\"web/lfc-logo.svg\" height=\"128pt\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\nActyx is a **decentralized** event **database**, **streaming** and **processing** engine that allows you to easily build [local-first cooperative](https://www.local-first-cooperation.org/) apps.\nFor more information on how to use it, please refer to [developer.actyx.com](https://developer.actyx.com).\nYou’re also very welcome to drop us a line in [the forum](https://groups.google.com/a/actyx.io/g/developers/) and watch this space (or give it a ✩)!\n\n## Features\n\n- durable event stream storage in peer-to-peer network using [libp2p](https://github.com/libp2p/rust-libp2p) and [ipfs-embed](https://github.com/ipfs-rust/ipfs-embed)\n- low-latency replication between nodes\n- tag-based and time-based indexing of events\n- full-fledged support for event-sourcing, guaranteeing eventual consistency\n- [query language](https://developer.actyx.com/docs/reference/aql) for extracting and summarizing events (still growing)\n\nFor our high-level roadmap please check out [this wiki page](https://github.com/Actyx/Actyx/wiki/Roadmap).\n\n## Quick demo\n\nFirst, make sure you already have `cmake` and `protobuf-compiler` installed on your machine by running the following commands:\n```sh\ncmake --version\nprotoc --version\n```\nIf these trigger some errors, you might want to install these dependencies.\n\nThen, to try it out, clone the repo and start Actyx from within the `rust/actyx` directory (you’ll want to compile with `--release` for more serious testing):\n\n```sh\ncargo run --bin actyx\n```\n\nIn another terminal, also in `rust/actyx`, interact with the running Actyx process using the CLI:\n\n```sh\n# first create your keypair:\ncargo run --bin ax users keygen\n\n# then ask for all events:\ncargo run --bin ax events query localhost 'FROM allEvents'\n# or get the listen addresses from the discovery mechanism:\ncargo run --bin ax events query localhost 'FROM \"discovery\" FILTER IsDefined(_.NewListenAddr) SELECT _.NewListenAddr[1]'\n```\n\nThe last argument is an [AQL expression](https://developer.actyx.com/docs/reference/aql), you can play around a little bit with the `'discovery'` and (after some time) `'metrics'` events that Actyx emits by itself.\nFor emitting events and writing more complex logic, please take a look at [the Typescript SDK](js/sdk/README.md).\n\n## How to get Actyx\n\nFor up-to-date binaries built for a variety of host systems please refer to [Actyx Releases](https://developer.actyx.com/releases).\nIf you want to build it yourself from source, you’ll need GNU make (version 4.2 or later), the current stable Rust toolchain, and language-specific development environments for building the respective SDKs.\n\nCommon commands are:\n\n```sh\n# compile Actyx and Actyx CLI for your current host system\nmake current\n\n# build all Typescript\nmake all-js\n```\n\nThere are provisions in the Makefile for cross-building, but those currently only work for Actyx employees — we’ll fix that soon.\n\n## Contributing\n\nWe welcome all kinds of contributions, whether they are in the form of bug reports, feature requests, or code.\nJust open an issue or pull request and we’ll guide you through the process where needed — we look forward to hearing from you!\n\nPlease be respectful when interacting with others on this repository.\nWe reserve the right to ban you from participating in discussions or development in case of repeated or severe cases of uncivilised conduct.\n\n### Structure of the codebase\n\nThis is a monorepo, containing all parts that make up the Actyx suite.\nWe have structured the parts by programming language:\n\n- `js/sdk` contains the Typescript/Javascript [SDK](https://www.npmjs.com/package/@actyx/sdk)\n- `js/node-manager` holds the Electron app _Actyx Node Manager_, a graphical version of the Actyx CLI\n- `jvm/os-android` hosts the Android-specific part of Actyx (written in Kotlin) and the build definition for the APK\n- `rust/actyx` is the **main codebase** containing the native code for Actyx and Actyx CLI\n- `rust/sdk` and `rust/sdk_macros` are the crates that make up the [Rust SDK](https://crates.io/crates/actyx_sdk)\n- `rust/release` is a tool for automatically generating [version numbers](versions) and changelog\n\nIn addition to these main parts there are folders for github workflows, Azure pipelines, some design documents, JSON schema definitions, and the Windows installer.\nThe `integration` directory holds our AWS-based integration test suite that ensures the interoperability of the various parts listed above.\nThe [website](https://developer.actyx.com) sources are in the `web` folder, accompanied by the documentation samples in `third-party` from which code snippets are extracted.\n\n## Licensing\n\nActyx, Actyx CLI, Actyx Node Manager, and the SDKs (for Typescript/Javascript, Rust) are available under the [Apache 2.0](LICENSE.Apache_2.0) open-source license. This license and the accompanying [NOTICE](NOTICE) applies to all files in the `dotnet`, `integration`, `js`, `jvm`, `rust`, `third-party`, `wix` directories except where specified otherwise.\n\nFor commercial licensing please contact [Actyx Support](https://www.actyx.com/enterprise).\n\n## Acknowledgements\n\nThe implementation of these libraries and the underlying theory has been supported by the Horizon Europe EU project «TaRDIS» (grant number 101093006).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Factyx%2Factyx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Factyx%2Factyx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Factyx%2Factyx/lists"}