Self-hosted AI generation infrastructure with on-chain credit system. Deploy AI tools across Telegram, Discord, and Web from a single codebase.
- Multi-platform deployment – Telegram bot, Discord bot, and Web interface from one codebase
- Tool Registry – Add new AI workflows via JSON definitions, auto-generates commands and UI
- On-chain credits – Ethereum-based credit system with deposits, spending, and price feeds
- ComfyUI integration – Orchestrates ComfyUI workflows with sync, webhook, and polling strategies
- Real-time updates – WebSocket notifications for generation progress and completion
- LoRA resolution – Automatic trigger word detection and model loading
- User training – Fine-tune models on user-provided datasets via VastAI
- Modular services – Points, Media, Storage, Analytics, and more
NOEMA is in active development. Data is stored in MongoDB and cloud storage. End-to-end encryption is not yet implemented.
-
Install dependencies
npm install
-
Configure environment – Copy
.env-exampleto.envand fill in:TELEGRAM_TOKEN=your_telegram_bot_token DISCORD_TOKEN=your_discord_bot_token INTERNAL_API_KEY_SYSTEM=your_secret_key ETHEREUM_RPC_URL=https://your-rpc-endpoint ETHEREUM_SIGNER_PRIVATE_KEY=0x... MONGO_PASS=mongodb+srv://user:pass@cluster/db
-
Start development server
./deploy.sh # or use scripts/run-dev.sh for hot-reload -
Access the application
- Web UI: http://localhost:4000
- Internal API: http://localhost:4000/internal/v1
- External API: http://localhost:4000/api/v1
Telegram and Discord bots connect automatically when tokens are configured.
NOEMA runs on a single Docker container with Caddy as reverse proxy.
Tested on DigitalOcean Droplet:
- Ubuntu 22.04 with Docker
- 1 vCPU, 1 GB RAM, 25 GB SSD ($6/mo)
- Swap required for builds (see below)
-
SSH into server
ssh root@your-server-ip
-
Clone and configure
git clone https://github.com/your-org/stationthisdeluxebot.git cd stationthisdeluxebot # Copy .env file with production credentials
-
Deploy
./deploy.sh
-
Update
git pull && ./deploy.sh
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstabConfigure /etc/caddy/Caddyfile:
yourdomain.com {
encode zstd gzip
reverse_proxy hyperbot:4000
}
Reload after changes:
sudo systemctl reload caddyRecommended inbound rules:
| Port | Source | Purpose |
|---|---|---|
| 22 | Your IP only | SSH |
| 80 | 0.0.0.0/0 | HTTP (Caddy redirect) |
| 443 | 0.0.0.0/0 | HTTPS |
- Create a tool definition JSON in
src/core/tools/definitions/ - Restart the application
- Tool appears in:
- Telegram as
/command - Discord as slash command
- Web UI in tool sidebar
- API at
/api/v1/tools/registry
- Telegram as
See existing definitions for schema examples.
We're open to contributions. Fork the repo, make changes, and submit a pull request with a clear description of what you've changed.
NOEMA is released under the VPL License. See LICENSE for details.