Run Mini-Apps, chat with models, and follow your jobs from your phone or tablet. The mobile app is a companion to desktop and web: you build and edit workflows there, and run and review them here. It connects to any NodeTool server, whether your desktop, a self-hosted instance, or NodeTool Cloud.
New here? Start on desktop with Getting Started.
You must sign in. The app opens on a Login screen with Continue with Google (Supabase auth). A build without EXPO_PUBLIC_SUPABASE_URL and EXPO_PUBLIC_SUPABASE_ANON_KEY shows a banner saying login is not configured.
Overview

| Feature | Notes |
|---|---|
| Mini-Apps | The home screen. Run apps published on the server |
| Chat | Streaming responses across providers, image and video generation modes, and inline previews of sketches and timelines |
| Jobs | Review job history. A finished run sends a notification while the app is in the background |
| Assets | Browse, upload from the camera or photo library, and view |
| Documents | Edit storyboards. View timelines and sketches |
| Desktop and web only | Workflow editing, scripts, JS scripts, managing API keys, collections, and triggers, and editing timelines or sketches |
| Platforms | iOS, Android, browser |
| Server | Connect to any NodeTool server |
Getting the App
From App Stores (Coming Soon)
The app will be available on:
- iOS: Apple App Store
- Android: Google Play Store
For Developers
Build and run from source:
# Clone the NodeTool repository
git clone https://github.com/nodetool-ai/nodetool.git
cd nodetool/mobile
# Install dependencies (mobile/ is not a root workspace)
npm install
# Start the development server
npm start
Then:
- Press
ifor iOS Simulator (macOS only) - Press
afor Android Emulator - Press
wfor web browser - Scan the QR code with a development build on your phone
Expo Go does not work. The app uses native modules that Expo Go does not ship (Google Sign-In, Sentry, speech recognition), so sign-in and voice input fail there. Build a development build with npm run build:dev. See mobile/README.md for the TestFlight route.
Connecting to Your Server
The mobile app requires a running NodeTool server.
Configure Server URL
- Open the app
- Go to Settings (gear icon on the Workflows screen)
- Enter the URL in API Host
- Tap Test & Save to check the server and save the URL in one step, or Save Only to skip the check
- The button reports the result: Server Ready & Saved, Sign In Required, Connection Timed Out, Incompatible Server, or Network Error
The default host is http://localhost:7777. The URL must start with http:// or https://.
Server URLs by Platform
| Platform | Server URL |
|---|---|
| iOS Simulator | http://localhost:7777 |
| Android Emulator | http://10.0.2.2:7777 |
| Physical Device | http://<your-computer-ip>:7777 |
Physical devices must be on the same network as your NodeTool server.
AI Chat
Chat with AI models from your mobile device.

Features
- Streaming responses – See text appear in real-time
- Model selection – Choose from available AI models
- Markdown rendering – Code blocks and formatting
- Stop generation – Tap the stop button to cancel a response
- Multiple threads – Keep separate conversation topics and reopen them from the threads list
- Attachments and voice – Attach files, take or pick photos, and dictate with voice input
- Modes – Switch the composer between Chat, Image, and Video. Image and video modes expose aspect ratio, resolution, and variation or duration pickers
- Options bar – Toggle Agent and Help modes, add tools, and choose collections to search
- Inline previews – When a reply names a sketch or a timeline, it draws in the message with a chip that opens it. Other documents show the chip alone
How to Chat
- Tap the Chat button in the Apps header
- Select a model (tap model name)
- Type your message
- Tap the send button (up arrow)
- Watch the AI respond in real-time
Tips
- Use the + button to start a new conversation
- Use the history button to open past conversations. Each thread can be deleted there
- Tap the stop button to halt a response
- Switch models mid-conversation if needed
Running Mini Apps
The home screen is the Apps list. Mini Apps are a separate resource, authored in the desktop App Builder and stored on the server. Tapping an app runs it on its own screen. See Mini Apps on Mobile. The Apps header opens Chat, Documents, Jobs, Assets, and Settings.
Workflows are not edited on mobile. Build and edit them in the desktop or web app, and run them here through a Mini App.
Running a Mini App
- Tap an app on the Apps screen
- Fill in the inputs
- Tap Run
- View results as they stream in

Supported Input Types
Mini App inputs map from the workflow’s Input nodes to native controls:
| Kind | Input nodes |
|---|---|
| Text | String, Text, Message |
| Numbers | Integer, Float |
| Boolean | Boolean toggle |
| Media | Image, Video, Audio, Document, Model3D |
| Lists | Image, Video, Audio, and Text lists |
| Paths | File path, Folder path, Folder |
| Other | Color, DataFrame, Select, Image size |
| Models | Language, image, video, TTS, ASR, embedding, and Hugging Face model inputs |
Documents
The Documents screen lists your storyboards, timelines, and sketches.
| Kind | On mobile |
|---|---|
| Storyboard | Edit shots and the board by touch, or ask the assistant |
| Timeline | View the tracks and clips. Edit in the desktop or web app, or ask the assistant. The viewer reloads when you come back to it |
| Sketch | View the layers |
Other documents, such as scripts, open in the desktop or web app.
Mobile Settings
Configure the mobile app from the gear icon:

| Section | Purpose |
|---|---|
| Appearance | Light, Dark, or System theme |
| Server Connection | API Host with Test & Save and Save Only |
| Account | Signed-in email and Sign Out |
| About | App version and the GitHub repository |
Mobile Language Model Selection
Tapping the model name at the top of a chat opens a two-step picker:
- Select a provider — the providers your server reports as supporting message generation.
- Select a model — the models offered by that provider.
A search box appears in either step when the list has more than five entries, and a back arrow returns from models to providers. There is no API-key gating, disabled styling, or docs links in this picker.

Screens
The stack registers these screens: Login, Apps, App, Settings, Chat, Threads, Language Model Selection, Documents, Storyboard Editor, Timeline Viewer, Sketch Viewer, Assets, Asset Viewer, Jobs, and Job Detail.
Deep links
The app registers the nodetool:// scheme. Links work only while signed in. Finished runs send a local notification whose link opens the job.
| Link | Opens |
|---|---|
nodetool:// or nodetool://apps |
Apps |
nodetool://chat/<threadId> |
Chat |
nodetool://threads, documents, assets, jobs, settings |
The matching screen |
nodetool://app/<applicationId> |
A Mini App |
nodetool://job/<jobId> |
Job detail |
nodetool://asset/<assetId> |
Asset viewer |
nodetool://document/<kind>/<id> |
Storyboard editor, timeline viewer, or sketch viewer (storyboard, timeline, sketch) |
nodetool://settings/models |
Model picker |
Server Requirements
Your NodeTool server must be:
- Running – Start with
nodetool serve --host 0.0.0.0 --port 7777 - Accessible – On same network as your device
- Configured – With the models you want to use
Starting the Server
nodetool serve --host 0.0.0.0 --port 7777
nodetool serve binds to 127.0.0.1 on port 7777 by default. A physical device cannot reach that, so pass --host 0.0.0.0 to listen on your network. The iOS Simulator and Android Emulator reach the default binding through the addresses in the table above.
Firewall Settings
If connecting from a physical device, ensure:
- Port 7777 is open on your computer’s firewall
- Your router allows local network connections
- Both devices are on the same WiFi network
Troubleshooting
Cannot Connect to Server
Symptoms: “Connection failed” or timeout errors
Solutions:
- Verify the server is running
- Check the server URL in Settings
- For physical devices:
- Use your computer’s IP address (not localhost)
- Ensure same WiFi network
- Check firewall settings
Android Emulator Connection Issues
Problem: Cannot reach localhost
Solution: Use http://10.0.2.2:7777 instead of localhost:7777. This is Android’s special IP for the host machine.
App Crashes on Startup
Solutions:
- Clear app data and restart
- Check that all dependencies are installed:
npm installinsidemobile/ - Reset Metro bundler:
npx expo start --clear
Chat Not Streaming
Symptoms: Responses appear all at once
Solutions:
- Check WebSocket connection
- Verify server is running current version
- Try a different AI model
Platform Notes
iOS
- Requires Xcode for development (macOS only)
- Use iOS Simulator for testing
- Production builds via EAS Build
Android
- Requires Android Studio for development
- Use Android Emulator for testing
- Use
10.0.2.2for localhost access
Web
- Works in any modern browser
- Good for testing without mobile device
- Run with
npm run web
Building for Production
Use Expo’s EAS Build for production apps:
# Install EAS CLI
npm install -g eas-cli
# Log in to Expo
eas login
# Build for Android
eas build --platform android --profile preview
# Build for iOS
eas build --platform ios --profile preview
mobile/package.json wraps these as npm run build:dev, build:preview, and build:production, each for all platforms. The profiles in mobile/eas.json are development, development-simulator, development-testflight, preview, preview-simulator, and production.
For store submissions:
# Google Play Store (AAB format)
eas build --platform android --profile production
# Apple App Store
eas build --platform ios --profile production
See EAS Build Documentation for details.
Related Topics
- Getting Started – Desktop setup and first workflow
- User Interface – Full UI guide
- Mini Apps – What apps are and how they run
- Mini Apps on Mobile – Opening and running an app on the phone
- Chat & Agents – Chat features in detail
- API Reference – Server API documentation