AO-Forge
Repo metadata

🔥 AO-Forge: Your AI-powered CLI companion for building, managing, and deploying AO smart contracts with Next.js, React, Vue, Nuxt.js, and SvelteKit integration.
Documentation
Features
- 🚀 Streamlined Project Creation - Clone framework templates directly from GitHub
- 🔄 Multiple Framework Support - Next.js, React, Vue, Nuxt.js, and SvelteKit
- 📦 Automatic Setup - Dependencies, Git, and AO configuration in one command
- 🎯 Smart Configuration - Auto-detects Lua files and creates
ao.config.yml
- 💻 Interactive CLI - User-friendly prompts and guided setup
- ⚡️ Built with TypeScript - Full type safety and modern development
- 🖥️ Integrated Development -
ao-forge dev starts both frontend and AO process
- 🤖 AI-Powered Code Generation - Generate AO contracts with AI assistance
- 🔨 Simple Build System - Framework-agnostic build and deployment
- ⚙️ Configuration Management - Centralized AO process configuration
- 🔧 AO Process Management - Start, stop, and monitor AO processes with
ao-forge process
Built with
TypeScript, Node.js, Commander, Inquirer, OpenAI API, Anthropic API, fs-extra, ora, chalk, Jest, pnpm
Installation
npm install -g ao-forge
pnpm add -g ao-forge
npx ao-forge init my-app
Quick Start
See the Quick Start Guide for step-by-step instructions.
CLI Usage
See the CLI Reference for all commands, options, and advanced usage.
AI-Powered Development
Forge includes advanced AI capabilities for AO development. See the AI Commands section in the CLI Reference for details and examples.
AI Integration
Forge supports AI-powered code generation and AO process management. See CLI Reference for complete documentation.
Project Structure
my-app/
├── README.md
├── node_modules/
├── package.json
├── ao.config.yml # AO configuration file (auto-generated)
├── tsconfig.json
├── ao/ # AO process files (auto-detected)
│ └── *.lua
└── [framework-specific-files]
├── src/ # React/Vue/SvelteKit projects
├── app/ # Next.js/Nuxt.js projects
└── [framework-specific-structure]
Configuration (ao.config.yml)
The configuration file is now fully documented in the CLI Reference. Use the provided template as a starting point.
Command Options
init | -f, --framework | Framework (nextjs, react, vue, nuxtjs, svelte) |
| -p, --path | Path to create project |
| --package-manager | Package manager (npm, yarn, pnpm) |
| --port | Development server port |
| --process-name | AO process name |
| --git | Initialize Git repository |
process start | -n, --name <name> | Name for the AO process |
| --wallet <path> | Path to wallet file |
| --data <data> | Process data |
| --module <module> | Process module |
process stop | | Stop running AO process |
process list | | List all running processes |
dev | --port <port> | Development server port |
| --process-name <name> | AO process name |
ai generate | -p, --prompt <text> | Description of code to generate |
| -t, --type <type> | Type of code (contract/module/test) |
| -o, --output <path> | Output file path |
| --provider <provider> | AI provider (openai/anthropic) |
| --model <model> | Specific AI model to use |
Development
git clone https://github.com/Utitofon-Udoekong/aoforge-cli.git
cd aoforge-cli
pnpm install
pnpm build
pnpm run link:global
ao-forge init test-app
pnpm run unlink:global
Development Scripts
pnpm dev
pnpm build
pnpm test:cli
pnpm link:global
pnpm unlink:global
Running AO Processes
ao-forge provides streamlined AO process management:
ao-forge process start
ao-forge process start -n "my-process"
ao-forge process list
ao-forge process stop
ao-forge dev
The ao-forge process start command automatically:
- Detects Lua files in your project
- Loads them into the AO process
- Uses configuration from
ao.config.yml
- Switches to interactive AOS CLI for real-time development
Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature)
- Commit your changes (
git commit -m 'Add amazing feature')
- Push to the branch (
git push origin feature/amazing-feature)
- Open a Pull Request
License
Released under MIT by @Utitofon-Udoekong.
Support
For support, please open an issue on GitHub.