---
layout: page
title: "Mobile App"
description: "Run Mini-Apps and chat from iOS and Android."
---

Run Mini-Apps and chat with models from your phone or tablet. Connects to any NodeTool server — your desktop, a self-hosted instance, or NodeTool Cloud.

> New here? Start on desktop with [Getting Started](getting-started.md).

---

## Overview

![Mobile dashboard](assets/screenshots/dashboard-mobile.png)

| Feature | Notes |
|---------|-------|
| **Chat** | Streaming responses across providers |
| **Mini-Apps** | Run your workflows with a simple UI |
| **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:

```bash
# Clone the NodeTool repository
git clone https://github.com/nodetool-ai/nodetool.git
cd nodetool/mobile

# Install dependencies
npm install

# Start the development server
npm start
```

Then:
- Press `i` for iOS Simulator (macOS only)
- Press `a` for Android Emulator
- Press `w` for web browser
- Scan the QR code with Expo Go on your phone

---

## Connecting to Your Server

The mobile app requires a running NodeTool server.

### Configure Server URL

1. Open the app
2. Go to **Settings** (gear icon)
3. Enter your server URL
4. Tap **Test Connection**
5. Save when successful

### 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.

![Mobile Chat](assets/screenshots/chat-mobile.png)

### Features

- **Streaming responses** – See text appear in real-time
- **Model selection** – Choose from available AI models
- **Markdown rendering** – Code blocks, formatting, syntax highlighting
- **Stop generation** – Tap stop to cancel long responses
- **Multiple threads** – Keep separate conversation topics

### How to Chat

1. Tap the **Chat** icon in the header
2. Select a model (tap model name)
3. Type your message
4. Tap **Send**
5. Watch the AI respond in real-time

### Tips

- Use the **+** button to start a new conversation
- Tap **Stop** to halt long responses
- Scroll up to review conversation history
- Switch models mid-conversation if needed

---

## Mini Apps

Run your NodeTool workflows with a simplified mobile interface.

### Mini Apps List

Browse every mini-app published by your server.

![Mini Apps List](assets/screenshots/screenshot-placeholder.svg)

### What Are Mini Apps?

Mini Apps are workflows converted to simple interfaces. They hide the complexity of the workflow and show only:
- Input fields
- Run button
- Results

### Running a Mini App

1. Open the **Mini Apps** screen
2. Browse available apps
3. Tap an app to open it
4. Fill in the inputs:
   - **Text fields** – Type your input
   - **Number fields** – Enter values
   - **Toggle switches** – Enable/disable options
5. Tap **Run**
6. View results below

![Mini App Runner](assets/screenshots/screenshot-placeholder.svg)

### Supported Input Types

| Type | Description |
|------|-------------|
| Text | Single or multi-line text input |
| Number | Numeric values |
| Boolean | On/off toggle switches |

---

## Mobile Graph Editor

The mobile app includes a touch-friendly version of the workflow editor. It defaults to a vertical chain layout but supports pan-and-zoom editing for arbitrary graphs.

### Overview

![Mobile Graph Editor](assets/screenshots/mobile-graph-editor-overview.png)

### Empty State

New workflows open with a single prompt to add your first node.

![Mobile Graph Editor — Empty](assets/screenshots/mobile-graph-editor-empty.png)

### Node Picker

Tap the **+** button to open the full-screen node picker, which filters by input/output compatibility.

![Mobile Graph Editor — Picker](assets/screenshots/mobile-graph-editor-picker.png)

### Linear Chain

Most workflows render as a vertical chain of cards on mobile — easier to scroll and tap.

![Mobile Graph Editor — Chain](assets/screenshots/mobile-graph-editor-chain.png)

Touch gestures:

| Gesture | Action |
|---------|--------|
| Tap a card | Open its properties |
| Long-press | Grab and reorder |
| Pinch | Zoom (when the graph view is in "free" mode) |
| Two-finger drag | Pan the canvas |

---

## Mobile Settings

Configure the mobile app from the gear icon:

![Mobile Settings](assets/screenshots/screenshot-placeholder.svg)

| Setting | Purpose |
|---------|---------|
| Server URL | Which NodeTool server to talk to |
| Test Connection | One-tap ping of the configured URL |
| Default Language Model | Default LLM for new chat threads |
| Appearance | Light / Dark / System theme |
| Storage | Cached thread size and clear cache |
| About | App version, build info, links |

---

## Mobile Language Model Selection

Tapping the model name at the top of a chat opens a searchable picker with every model offered by your server.

![Mobile Model Selection](assets/screenshots/screenshot-placeholder.svg)

Providers without configured API keys are greyed out and linked to the docs for setup.

---

## Tablet Dashboard

On tablets the dashboard uses a two-column layout that shows the workflow list and the active thread side-by-side.

![Tablet Dashboard](assets/screenshots/dashboard-tablet.png)

---

## Server Requirements

Your NodeTool server must be:

1. **Running** – Start with `nodetool serve --port 7777`
2. **Accessible** – On same network as your device
3. **Configured** – With the models you want to use

### Starting the Server

```bash
# Activate environment
conda activate nodetool

# Start server
nodetool serve --port 7777
```

The server runs at `http://localhost:7777` by default.

### 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**:
1. Verify the server is running
2. Check the server URL in Settings
3. 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**:
1. Clear app data and restart
2. Check that all dependencies are installed: `npm install`
3. Reset Metro bundler: `npm start --reset-cache`

### Chat Not Streaming

**Symptoms**: Responses appear all at once

**Solutions**:
1. Check WebSocket connection
2. Verify server is running current version
3. 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.2` for 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:

```bash
# 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
```

For store submissions:
```bash
# Google Play Store (AAB format)
eas build --platform android --profile production

# Apple App Store
eas build --platform ios --profile production
```

> See [EAS Build Documentation](https://docs.expo.dev/build/introduction/) for details.

---

## Related Topics

- [Getting Started](getting-started.md) – Desktop setup and first workflow
- [User Interface](user-interface.md) – Full UI guide
- [Mini Apps](user-interface.md#mini-apps) – Creating Mini Apps
- [Global Chat](global-chat-agents.md) – Chat features in detail
- [API Reference](api-reference.md) – Server API documentation
