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.4.0.tar.gz (1.5 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.4.0-py3-none-any.whl (31.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: nativebot-1.4.0.tar.gz
  • Upload date:
  • Size: 1.5 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.4.0.tar.gz
Algorithm Hash digest
SHA256 a0f7cff248462fa6589d4b7c62047f58edcd2dfc937a6267a45e60bd578a6ea6
MD5 745d3d23085ec05c1973c50b7e3f2cd1
BLAKE2b-256 4d6b1768c1b417c9c2c4b3c31c85f61a3904b819b9e523d25f1f73794fb77443

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nativebot-1.4.0-py3-none-any.whl
  • Upload date:
  • Size: 31.0 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.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 64a4a5390ceac4f667f374c55e9990b8d256d39dd40708a826d509b0540a9385
MD5 e139bfe11e429f33c29393b504119b7e
BLAKE2b-256 eaf8894fa4eaea8e2bafc522135b8a4c620248921435dcf90c5a78237f049ce6

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