Realm is a desktop environment for Urbit.

Directory structure

We use yarn workspace to manage the multiple modules.

- app/                 the Realm desktop client
- onboarding/          the web onboarding flow
- shared/              shared code in the monorepo
- lib/                 outwards facing packages that are published to
  - design-system/     component library for Realm apps
  - presence/          cursor streaming for Realm apps

Getting started

We use yarn workspaces to build all packages for Realm.

# Install dependencies and build all packages
# Note: you may have to rebuild sqlite3
cd app
cd ..
# Start the app
yarn start

Dev setup

  1. Follow /.docs/ to setup fakeships and pull the Urbit submodule down into the Realm repo.

  2. Once these ships are created, you can then go to /app/ to get started with Realm.

Linux Installation Notes

  • Realm is distributed as an AppImage file. AppImages require FUSE version 2 to run. If you are running Ubuntu (>= 22.04), you will need to install fuse version 2. More information here:

Build prerelease version

npx cross-env DEBUG_PROD=true yarn package:prerelease:mac
npx cross-env DEBUG_PROD=true yarn package:prerelease:linux
npx cross-env DEBUG_PROD=true yarn package:prerelease:win

Building a prerelease will replace the .d.ts files in all the /dist folders, so make sure to run rm -rf ./**/dist followed by yarn in root when you want to run Realm in dev mode again.


For frontend development, make sure to:

  1. Install the ESLint extension in your editor of choice (VSCode link). The Prettier extension is not needed since we're using it as an ESLint plugin.

  2. Configure your editor to format on save, so you don't have to run yarn lint manually (VSCode instruction).

  3. Follow the Frontend Style Guide.

Last updated