Skip to main content

Open-source AI app builder CLI. Create mobile apps by chatting with AI.

Project description

NativeBot

NativeBot

Build and ship mobile apps from your terminal. Powered by AI.

Describe your app โ†’ Claude builds it โ†’ Preview on your phone โ†’ Submit to App Store.

MIT License PyPI GitHub Stars


Quick Start

pipx install nativebot   # or: pip install nativebot
claude login
nativebot

That's it. Three commands. No API key setup. Uses your Claude subscription.


Demo

$ nativebot

  ๐Ÿš€ NativeBot โ€” AI App Builder

  ? What would you like to do? Create new project
  ? Project name: FitnessApp
  ? Describe your app: A fitness tracker with workout logging
  ? Start building now? Yes
  ? Choose model: Sonnet 4.6 (recommended)

  ๐Ÿค– Claude is working...
  โ”œโ”€ Reading package.json
  โ”œโ”€ Writing app/screens/WorkoutScreen.tsx
  โ”œโ”€ Writing app/components/ExerciseCard.tsx
  โ”œโ”€ bash โ†’ npm install react-native-chart-kit
  โ”œโ”€ Writing app/screens/ProgressScreen.tsx
  โ””โ”€ bash โ†’ npx expo export -p web

  โœ… Done! 8 files changed in 32s

  You: Add a dark mode toggle to the settings page

  ๐Ÿค– Claude is working...
  โ”œโ”€ Reading app/screens/SettingsScreen.tsx
  โ”œโ”€ Writing app/context/ThemeContext.tsx
  โ”œโ”€ Edit app/screens/SettingsScreen.tsx
  โ””โ”€ Edit app/_layout.tsx

  โœ… Done! 3 files changed in 18s

Commands

nativebot                  # Interactive mode (recommended)
nativebot create "MyApp"   # Create a new project
nativebot list             # List all projects
nativebot open MyApp       # Open project and chat with Claude
nativebot preview MyApp    # Launch Expo dev server
nativebot files MyApp      # Show project file tree
nativebot export MyApp     # Build & submit instructions
nativebot delete MyApp     # Delete a project

Telegram Bot

Build apps from your phone โ€” chat with NativeBot on Telegram.

NativeBot includes a self-hosted Telegram bot. You create your own private bot on Telegram and run it on your machine. It's not a public bot โ€” it's your bot, connected to your projects.

Setup (1 minute):

# 1. Create your bot on Telegram:
#    Open Telegram โ†’ search @BotFather โ†’ send /newbot
#    Pick a name and username โ†’ BotFather gives you a token

# 2. Start the bot on your machine:
export TELEGRAM_BOT_TOKEN=your-token
nativebot telegram

Now open Telegram and message your bot. That's it.

Commands in Telegram:

  • /create MyApp โ€” Create a new project
  • /open MyApp โ€” Switch to a project
  • /preview โ€” Get Expo URL to open on your phone (chat keeps working)
  • /list โ€” List all projects
  • /files โ€” Show file tree
  • /model opus โ€” Switch model
  • Just send any message to chat with Claude!

The bot runs on your machine โ€” same local projects, same ~/.nativebot/projects/ directory. You can use the CLI and Telegram interchangeably on the same projects.

How It Works

  1. Create โ€” Seeds a production-ready Expo React Native template
  2. Chat โ€” Describe features in plain English, Claude writes the code
  3. Preview โ€” Run nativebot preview MyApp โ†’ scan QR with Expo Go on your phone
  4. Iterate โ€” Keep chatting to add features, fix bugs, refine UI
  5. Ship โ€” Build with EAS and submit to App Store / Google Play

Preview Your App

nativebot preview MyApp
# Opens Expo dev server โ€” scan QR code with Expo Go

Or manually:

cd ~/.nativebot/projects/MyApp
npx expo start

Deploy to App Store

nativebot export MyApp
# Shows step-by-step build & submit instructions

Or directly:

cd ~/.nativebot/projects/MyApp
npm install -g eas-cli
eas login
eas build --platform ios
eas submit --platform ios

Requirements

Requirement Required? Notes
Python 3.10+ Yes python3 --version
Node.js 18+ Yes For Expo projects
Claude subscription Recommended Just run claude login โ€” no API key needed
Anthropic API Key Alternative Get one if you prefer API access
Expo Go (mobile) Recommended For live preview on phone
Apple Developer Account For shipping For App Store submission

Architecture

You (terminal)          NativeBot CLI            Claude Agent SDK
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ nativebot open   โ”‚โ”€โ”€โ”€โ–ถโ”‚ Project Manager โ”‚โ”€โ”€โ”€โ–ถโ”‚ Claude AI         โ”‚
โ”‚ "Add login"   โ”‚โ—€โ”€โ”€โ”€โ”‚ Chat Session    โ”‚โ—€โ”€โ”€โ”€โ”‚ Reads/Writes code โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                           โ”‚
                    ~/.nativebot/projects/
                    โ”œโ”€โ”€ FitnessApp/
                    โ”‚   โ”œโ”€โ”€ app/
                    โ”‚   โ”œโ”€โ”€ package.json
                    โ”‚   โ””โ”€โ”€ .nativebot/conversation.json
                    โ””โ”€โ”€ TodoApp/
  • Projects are real directories on your filesystem
  • Claude edits files directly โ€” no database, no cloud sync
  • Conversations saved locally for session continuity
  • Your code, your machine, your control

Why NativeBot?

Replit Bolt Lovable Vibecode NativeBot
Open source โŒ โŒ โŒ โŒ โœ…
CLI / Terminal โŒ โŒ โŒ โŒ โœ…
Self-hosted โŒ โŒ โŒ โŒ โœ…
Your own API key โŒ โŒ โŒ โŒ โœ…
Mobile-first (Expo) โŒ โŒ โŒ โœ… โœ…
No account required โŒ โŒ โŒ โŒ โœ…
Unlimited usage โŒ โŒ โŒ โŒ โœ…
Free forever โŒ โŒ โŒ โŒ โœ…

Project Structure

nativebot/
โ”œโ”€โ”€ src/nativebot/
โ”‚   โ”œโ”€โ”€ cli.py          # Click commands
โ”‚   โ”œโ”€โ”€ chat.py         # Interactive chat with Claude
โ”‚   โ”œโ”€โ”€ projects.py     # Project management (filesystem)
โ”‚   โ”œโ”€โ”€ agent.py        # Claude Agent SDK integration
โ”‚   โ”œโ”€โ”€ constants.py    # Models, tools, system rules
โ”‚   โ””โ”€โ”€ display.py      # Rich terminal formatting
โ”œโ”€โ”€ template/           # Expo seed template
โ”œโ”€โ”€ pyproject.toml      # Package config
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ VISION.md
โ””โ”€โ”€ LICENSE

Configuration

Projects are stored in ~/.nativebot/projects/. To change:

export NATIVEBOT_PROJECTS_DIR=/path/to/projects

Default model is Claude Opus 4.6. To change:

nativebot open MyApp --model sonnet  # Use Sonnet 4.6 (faster)

Contributing

PRs welcome! See CONTRIBUTING.md.

License

MIT โ€” see LICENSE.


Built with โค๏ธ by the NativeBot community
Powered by Claude ยท Expo

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nativebot-1.6.4.tar.gz (1.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nativebot-1.6.4-py3-none-any.whl (82.9 kB view details)

Uploaded Python 3

File details

Details for the file nativebot-1.6.4.tar.gz.

File metadata

  • Download URL: nativebot-1.6.4.tar.gz
  • Upload date:
  • Size: 1.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.16.5 cpython/3.14.3 HTTPX/0.28.1

File hashes

Hashes for nativebot-1.6.4.tar.gz
Algorithm Hash digest
SHA256 11c67f7c541fbb021fa1fc929ae589bf2ee67098f3ff1824a89e74e58eb96169
MD5 09287a311b828e8f60cd448a1fdb4f25
BLAKE2b-256 4c954c87779fa0c3f100f977b016fce67ba8a5c101aa2c280577bb679937531b

See more details on using hashes here.

File details

Details for the file nativebot-1.6.4-py3-none-any.whl.

File metadata

  • Download URL: nativebot-1.6.4-py3-none-any.whl
  • Upload date:
  • Size: 82.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.16.5 cpython/3.14.3 HTTPX/0.28.1

File hashes

Hashes for nativebot-1.6.4-py3-none-any.whl
Algorithm Hash digest
SHA256 54f8b7232ff493aa74dfd260b2d485821b9692753c5f6eabb868249f87fa3af4
MD5 f5a61946ffd578903f6d2f981c33fbf2
BLAKE2b-256 a765340421689059f3d82072b305281cbfc3264ed9d7dee95320c39d3659bdf1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page