Welcome to the Remix Labs central docs hub!

This wiki is intended as a gathering place for public-facing documentation of the Remix platform for early users. It is very much a work-in-progress, as the platform evolves and documentation is added. Please reach out to the Remix team if there is something you can't find.

For a very high-level overview, see the intro blog post.

Overview

Remix is a platform for composing and sharing software, and running it wherever you want. We target web and mobile web pages; native mobile and desktop apps; iOS/MacOS widgets, shortcuts, and app clips; and headless server functions like webhook handlers for Slack, voice assistants, etc. App composing can be done in a desktop or cloud-backed web app; the cloud version can be run as a single self-hosted Docker container.

At a high level, the basic flow of app design and use in the platform is:

  1. Apps are created or composed in the studio, which provides a visual environment for editing a set of underlying app definition data structures (essentially a node graph with nodes representing computation, visual output, and hooks for input/output actions, etc.).
  2. Remix Studio generates, from these data structures, code in the custom Mix language.
  3. The Mix code is compiled into a custom bytecode. The builder's data structures, Mix code, and the compiled bytecode are all stored in the platform's database, but only the bytecode represents the "program" that will be run.
  4. A Remix program can then run in one of our several runtime environments, each of which provides a VM that executes the bytecode and provides low-level builtin functions and a runtime that manages VM sessions and provides higher-level FFIs.

The various components of this stack are in many cases implemented in more than one way, and can be packaged into a variety of deployable Remix products.

Building

Apps, flows, widgets — it all starts in the studio. The studio currently exists as a web app backed by a cloud database and compiler service, with multiple app runtimes split between client and server. The whole thing can be packaged into a Docker image to self-host or run locally. A version of Remix Desktop that includes full app-building capabilities is expected to be available soon.

Running

Remix apps can be deployed to a variety of runtimes: a native iOS/Android container app (Remix DXP), a cloud web runtime, Remix Desktop (currently available for MacOS, Windows and Linux support coming), a Dockerized agent server for headless agents, web hooks, etc., and several more specialized runtimes, including iOS/MacOS widgets and shortcuts and iOS app clips.

Patching

Remix apps are modifiable at runtime via shareable patches, so end users can configure and remix their own UI adjustments and extensions.

Sharing

Remix apps, patches, and app data are all easily shareable between users and devices via .remix files.