Note: This repository contains a runbooks/ folder, which contains an offline Atuin Desktop workspace with runbooks that can be useful for development and testing. Create a new offline workspace and choose the runbooks/ folder as the workspace directory to open it. We will be expanding this workspace with more runbooks and information over time.
Developing on Atuin Desktop requires:
- Node.js 24.11.1 (see
.tool-versionsfor most up-to-date information) - Bun
- Latest Rust stable
Since Atuin Desktop is a Tauri app, you'll also need all of the prerequisites listed in the Tauri Prerequisites doc for your platform.
For development, you may find it useful to have the following tools installed:
For documentation, you may find it useful to have the following tools installed:
bun install
./script/dev
script/dev accepts the following options:
$ ./script/dev --help
Usage: script/dev [OPTIONS]
Options:
-p --profile VALUE Start with the given dev profile
-s --no-sync Start with automatic sync disabled
-d --devtools Start with devtools opened
-h --help Display this help message and exit
By default, the app will use the profile dev. You can pass a different profile name to use a different set of databases.
bun run tauri dev --no-bundle
bun run tauri build
bun run generate-bindings
A global app object lives on the window. Items can be added to it via DevConsole.addAppObject(). The following items are currently available on the object:
app.useStore- the store instanceapp.state- a proxy that forwards all property access touseStore.getState()app.api- API functionsapp.invoke- Tauri invoke functionapp.serverObserver- the server observer instanceapp.socketManager- the socket manager instanceapp.notificationManager- the notification manager instanceapp.workspaceSyncManager- the workspace sync manager instanceapp.queryClient- the React-Query clientapp.AppBus- the application bus instanceapp.SSHBus- the SSH bus instanceapp.EditorBus- the editor bus instanceapp.BlockBus- the block bus instanceapp.SharedStateManager- the shared state managerapp.models- model classes (Runbook, Workspace, Operation)app.handleDeepLink- function to handle deep linksapp.setHubCredentials- function to set hub credentials in developmentapp.editor- the BlockNote editor instance (when available)
You can increase the memory limit by setting the NODE_OPTIONS environment variable to --max-old-space-size=6144. For example:
NODE_OPTIONS=--max-old-space-size=6144 bun run tauri build
This repository contains an .envrc file that sets this for you if you use direnv.
Creating online workspaces and runbooks requires the user to be logged in to Atuin Hub. Atuin Hub is not currently open source, but we are exploring options to make it possible to work on this part of the app without it.