JeebsAI is a modular Rust-based AI assistant with a web UI, persistent storage, and advanced learning capabilities.
Jeebs now features:
- 🧠 Advanced Knowledge Retrieval - Search across brain nodes, knowledge triples, contexts, and FAQ
- 📚 Language Learning - Automatically learns vocabulary and patterns from every conversation
- 💡 Proactive Proposals - Suggests learning topics, features, and experiments
- 📊 Progress Tracking - Monitor vocabulary growth and knowledge accumulation
- 🎓 User Teaching - Store facts, context, and custom responses
👉 Quick Start Guide | Full Learning System Docs
Run this single command on your Ubuntu/Debian VPS to install dependencies, build the app, and start the service.
curl -sSL https://raw.githubusercontent.com/Deployed-Labs/JeebsAI/main/vps_fresh_install.sh | sudo bashTo push your local changes and automatically deploy them to your VPS:
# 1. Configure the script (first time only)
nano scripts/push_and_deploy.sh
# Set VPS_HOST="your-ip" and VPS_USER="root"
# 2. Run it
./scripts/push_and_deploy.shThis script will:
- Push your code to GitHub
- SSH into your VPS
- Pull the latest code
- Rebuild and restart the service
If you are already logged into the VPS and want to update manually:
cd /root/JeebsAI
sudo ./deploy_to_vps.sh# Check status
sudo systemctl status jeebs
# View logs (real-time)
sudo journalctl -u jeebs -f
# Restart service
sudo systemctl restart jeebsSSL Setup (HTTPS):
sudo ./scripts/setup_ssl.shDatabase Backups:
# Manual backup
sudo ./scripts/backup.sh
# Restore from backup
sudo ./scripts/restore.sh- Rust 1.70+ and Cargo
- SQLite 3
-
Clone the repository:
git clone https://github.com/Deployed-Labs/JeebsAI.git cd JeebsAI -
Build and run:
cargo run
-
Access the web UI:
- Development server: http://localhost:8080
Edit /etc/jeebs.env (on VPS) or .env (local) to configure the application:
# Server configuration
PORT=8080
# Database configuration
DATABASE_URL=sqlite:/var/lib/jeebs/jeebs.db
# Logging (optional)
# RUST_LOG=info,actix_web=infoControl the JeebsAI service:
# Check service status
sudo systemctl status jeebs
# Start the service
sudo systemctl start jeebs
# Stop the service
sudo systemctl stop jeebs
# Restart the service
sudo systemctl restart jeebs
# View logs
sudo journalctl -u jeebs -fA backup script is provided for automated database backups:
# Make the backup script executable (if not already)
chmod +x scripts/backup.sh
# Run manual backup
# From the project root:
./scripts/backup.sh
# Set up automated nightly backups with cron
sudo crontab -e
# Add this line to run backup at 2 AM daily:
# 0 2 * * * /path/to/JeebsAI/scripts/backup.shBackups are stored in the backups/ directory and automatically compressed. Backups older than 7 days are automatically deleted.
Development mode:
cargo runProduction mode (manual start):
./start.shProduction mode (systemd service):
sudo systemctl start jeebs- Local development: http://localhost:8080
- Production (with Nginx): https://your_domain.com
src/main.rs— Application entry point, web server, and CLIadmin/— Admin features (user management, now inadmin/user/)brain/— Knowledge graph and training logicauth/— Authentication, registration, and password reset
webui/— Web user interface (HTML, JS, CSS)install.sh— Automated installation script for VPS deploymentstart.sh— Manual startup scriptbackup.sh— Database backup scriptjeebs.service— systemd service templatejeebs.nginx— Nginx reverse proxy configuration template
All major features are separated into modules and submodules for maintainability:
admin::user— Admin user management endpoints and typesbrain— Knowledge graph, training, and storageauth— Registration, login, password reset
- Improved VPS deployment and nginx handling:
deploy_vps.shnow supports optionalDOMAINconfiguration, ensures nginx is started, and uses127.0.0.1for upstreams to avoid IPv6 connection issues. - Evolution UI updated to match the admin dashboard look-and-feel and backend guards were added so denied proposals cannot be applied.
- Rate limiting is now configurable with
RATE_PER_SECONDandRATE_BURSTenvironment variables; client-side retries/backoff were improved to reduce 429 noise in the UI.
These changes make deployment and management on modest VPS hosts
more reliable. See deploy_vps.sh, setup_jeebs_nginx.sh, and
webui/evolution.html for implementation details.
- All business logic is modularized for easy extension
- See each module for details and add new features in their own modules/submodules
- Run tests:
cargo test - Run with logging:
RUST_LOG=debug cargo run
- Create a new module in
src/ - Add necessary endpoints and logic
- Update the main application to include the module
- Add tests for the new functionality
- Rate limiting is configured in the Nginx reverse proxy
- Login endpoints have strict rate limits (1 req/s with burst of 5)
- General API endpoints are limited to 10 req/s with burst of 20
- SSL/TLS encryption via Let's Encrypt (Certbot)
We welcome contributions! Please see CONTRIBUTING.md for:
- Development workflow guidelines
- Code standards and style guide
- Testing requirements
- Pull request process
This project uses GitHub Actions for continuous integration and deployment:
- CI Pipeline: Automatically runs tests, linting, and security checks on every push and pull request
- Deployment Pipeline: Automatically deploys to production VPS when a new Release is published
For detailed information on setting up and using the CI/CD pipelines, see .github/GITHUB_ACTIONS_SETUP.md.
- Method: PGP-clearsign based login using the
/api/login_pgpendpoint. - How to login: Create a message in the exact format
LOGIN:<username>:<unix_ts>(for exampleLOGIN:1090mb:1650000000), then clearsign it with your PGP private key (for examplegpg --clearsign --armor message.txt). Paste the full clearsigned output into the web UI PGP login box or POST JSON to/api/login_pgplike:
{"signed_message": "-----BEGIN PGP SIGNED MESSAGE-----\n..."}- Timestamp window: The server accepts signed messages with a timestamp within 5 minutes of the server clock. If your clock is skewed, signatures will be rejected.
- Admin detection: A user is treated as admin when the username is
1090mbor the user's store entry hasrole: "admin". - Cookies / sessions: Sessions are stored using
actix-sessioncookies. The frontend must send credentials (credentials: 'same-origin') when calling login endpoints so the session cookie is set. - Troubleshooting 401s: If you get HTTP 401 on login, check server logs with
sudo journalctl -u jeebs -ffor signature verification errors. Verify the signed message format, timestamp freshness, and that the signed output includes your PGP signature.
- If local
cargo buildfails due to host toolchain/LLVM mismatches, build on the target VPS instead using the provideddeploy_jeebs.shscript. Example (non-interactive):
FORCE=true ./deploy_jeebs.sh /root/JeebsAI main trueThis will clone/pull the repository on the VPS, build the release binary there, and restart the service so runtime behavior can be verified.
# Check service status and logs
sudo systemctl status jeebs
sudo journalctl -u jeebs -n 50
# Verify the binary exists
ls -l /path/to/JeebsAI/target/release/jeebs# Check database file permissions
ls -l jeebs.db
# Restore from backup
./restore.sh# Check if port 8080 is in use
sudo netstat -tlnp | grep 8080
# Or use:
sudo lsof -i :8080We welcome contributions! Please see CONTRIBUTING.md for details.
When opening an issue, please use the provided templates:
- Bug Report: For reporting errors or unexpected behavior.
- Feature Request: For suggesting new ideas or improvements.
- v0.2.0: Enhanced Plugin System with hot-reloading.
- v0.3.0: Distributed Brain (P2P knowledge sharing).
- v1.0.0: Full Self-Evolution capabilities enabled.
This project is licensed under the MIT License - see the LICENSE file for details.
This project is modularized and ready for further extension.