Nutritious Pumpkin Masses

    TypeScript icon, indicating that this package has built-in type declarations

    3.1.0 • Public • Published

    Actyx Pond Framework

    An open-source Typescript/Javascript framework for implementing distributed state-machines which are automatically kept in sync across a swarm of interconnected devices. The Actyx Pond requires Actyx to be running on each device.

    The key features of Actyx Pond are:

    • Distributed event-sourcing for great information replication facilities and declarative information consumption
    • Partition tolerance with an eventually consistent programming model for arbitrary business logic
    • Eventual consistency by using a state machine time-travel algorithm to agree on global state

    This package builds on the Actyx SDK.

    Example usage

    import { Pond, Tag, Fish, FishId } from '@actyx/pond'
    (async () => {
        // Connect to the local Actyx process
        const pond = await Pond.default({
            appId: '',
            displayName: 'Example App',
            version: '1.0.0'
        const chatTag = Tag<string>('ChatMessage');
        // A fish is a state machine
        const ChatFish: Fish<string[], string> = {
            fishId: FishId.of('chat', 'MyChatFish', 0),
            initialState: [],
            onEvent: (state, event) => {
                return state;
            where: chatTag,
        // Example event emission; this can actually
        // happen on any node running Actyx
        setInterval(() => {
            pond.emit(chatTag, 'a chat message')
        }, 2_000)
        // Observe time-travelling state machine
        pond.observe(ChatFish, (state) => {

    Recommended VSCode plugins

    • ESLint for live source code linting


    npm i @actyx/pond@3.1.0





    Unpacked Size

    399 kB

    Total Files


    Last publish


    • roland.kuhn
    • ostollmann