Natural Push Machine

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

    3.1.12-alpha.3578187535 • Public • Published

    AUX VM Browser

    npm (scoped)

    A set of utilities required to run an AUX in a web browser.


    1. Install the NPM package
    npm install @casual-simulation/aux-vm-browser
    1. Add the WorkerEntry.js file to your Webpack config:
    entry: {
        vm: path.resolve(
    1. Add the iframe_host.html file to your webpack config via the HtmlWebpackPlugin:
    new HtmlWebpackPlugin({
        chunks: ['vm'],
        template: path.resolve(
        title: 'AUX VM',
        filename: 'aux-vm-iframe.html',
    1. Ensure that aux-vm-iframe.html is available at the root path of the site.


    Connect to an AUX

    import { BotManager } from '@casual-simulation/aux-vm-browser';
    import { AuxUser } from '@casual-simulation/aux-vm';
    async function start() {
        // The user that we want the program to act as.
        // In a real-world scenario we would not hardcode these values
        // and we would store the token in a secure location.
        const user: AuxUser = {
            id: 'myUserId', // The Unique ID of this user session.
            username: 'myUsername', // The unique username of the user.
            name: 'myName', // The common name of the user.
            token: 'mySecretToken', // The user password.
            isGuest: false, // Whether the user should be treated as a guest.
        // The ID of the channel that should be loaded.
        // The ID can have the following forms:
        // - 'channelId' - This will load 'channelId' from the current host (taken from navigator).
        // - '*/channelId' - This will load 'channelId' from over https
        const id = 'channelId';
        // Create a file manager.
        // This represents an in-browser AUX simulation.
        const sim = new BotManager(user, id, {
            isBuilder: false,
            isPlayer: false,
        // Initialize the simulation.
        // This will setup a web worker and pipe
        // events between the worker and main thread.
        await sim.init();
        // Listen for the sync state to change to "synced".
        // When we're synced we know we have the most up to date data
        // and we can communicate our changes to the server.
        // Note that this will not fire if we are not allowed to connect.
        // This may happen if we are not authenticated/authorized.
        sim.connection.syncStateChanged.subscribe((synced) => {
            if (synced) {
                console.log("We're synced!");
                // TODO: Update THE UI
            } else {
                console.log('No longer synced.');
                // TODO: Update the UI



    npm i @casual-simulation/aux-vm-browser

    DownloadsWeekly Downloads






    Unpacked Size

    328 kB

    Total Files


    Last publish


    • kallyngowdyyeti
    • casualsimulation