A module registry server for CLI automation workflows
CLIPilot Registry is the backend server that powers Clio, a lightweight CLI assistant for developers and operations teams. The registry hosts, validates, and distributes YAML workflow modules that Clio executes on client systems.
CLIPilot is the server (this repository) - a web application for browsing, uploading, and managing workflow modules.
Clio is the client - a Go CLI tool that syncs modules from this registry and executes them locally on user machines.
βββββββββββββββββββββββ ββββββββββββββββββββββββ
β Clio Client β HTTPS β CLIPilot Registry β
β (User's Machine) β <ββββββ> β (Server) β
β β Sync β β
β - Intent Detection β β - Module Storage β
β - Module Execution β β - Web UI β
β - Offline Ready β β - API Endpoints β
βββββββββββββββββββββββ ββββββββββββββββββββββββ
- π¦ Module Registry: Centralized storage for workflow modules
- π Semantic Search: AI-powered module discovery (Gemini)
- π Web UI: Browse, search, and upload modules via browser
- π Authentication: GitHub OAuth + session-based auth
- π Analytics: Track module downloads and popularity
- π Delta Sync: Efficient incremental updates for clients
- π API Keys: Secure CI/CD integration for automated uploads
- π± Clio Install: Hosts the Clio installation script at
/clio
If you want to use CLI automation, install the Clio client:
curl -fsSL clipilot.themobileprof.com/clio | shSee the Clio repository for documentation.
If you want to host your own registry server, continue below.
- Clone the repository:
git clone https://github.com/themobileprof/clipilot.git
cd clipilot- Create a
.envfile:
cat > .env << EOF
ADMIN_USER=admin
ADMIN_PASSWORD=your-secure-password
BASE_URL=https://your-domain.com
GITHUB_CLIENT_ID=your-github-oauth-client-id
GITHUB_CLIENT_SECRET=your-github-oauth-client-secret
GEMINI_API_KEY=your-gemini-api-key # Optional, for semantic search
EOF- Start the registry:
docker compose up -d- Create an admin user and API key:
# Option 1: Environment variables (automatic)
# Admin user is created from ADMIN_USER/ADMIN_PASSWORD in .env
# Option 2: Manual creation with script
./scripts/create-admin.shThe registry will be available at http://localhost:8082
- Go 1.24+
- SQLite3
# Clone the repository
git clone https://github.com/themobileprof/clipilot.git
cd clipilot
# Build the server
go build -o clipilot-server ./cmd/registry
# Run the server
./clipilot-server \
--port=8080 \
--data=./data \
--admin=admin \
--password=your-secure-passwordAfter starting the server, create an admin user:
# Run the admin creation script
./scripts/create-admin.sh
# Or use environment variables before starting
export ADMIN_USER=admin
export ADMIN_PASSWORD=your-secure-password
./clipilot-serverSee scripts/ADMIN_SETUP.md for detailed instructions.
GET /- Home pageGET /modules- Browse modules (web UI)GET /clio- Download Clio installation scriptGET /health- Health check endpointGET /api/v1/modules- List modules (JSON)GET /api/v1/modules/:id- Get module metadataGET /api/v1/modules/:id/download- Download module YAMLGET /api/v1/modules/changed?since=<timestamp>- Delta sync
POST /upload- Upload a module (web UI)POST /api/upload- Upload a module (API)GET /my-modules- View your uploaded modules
POST /api/install-script/upload- Upload Clio install script (CI/CD)GET /api/install-scripts- List install script versionsPOST /api/install-scripts/:id/activate- Activate a script version
Modules are YAML files that define multi-step workflows. Example:
name: setup_docker
id: org.example.setup_docker
version: 1.0.0
description: Install Docker Engine on Linux
tags: [docker, container, setup]
requires: [check_os, check_sudo]
provides: [docker_installed]
flows:
main:
start: check_platform
steps:
check_platform:
type: action
message: "Checking platform compatibility..."
command: |
if [ -f /etc/debian_version ]; then
echo "debian"
elif [ -f /etc/redhat-release ]; then
echo "rhel"
else
echo "unsupported"
fi
next: install_docker
install_docker:
type: action
message: "Installing Docker..."
command: |
sudo apt-get update
sudo apt-get install -y docker.io
next: end
end:
type: terminal
message: "Docker installed successfully!"Via Web UI:
- Log in at
https://your-registry.com/login - Navigate to
/upload - Select your YAML file and submit
Via API:
curl -X POST https://your-registry.com/api/upload \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@setup_docker.yaml"- Session-based (Web UI): Username/password or GitHub OAuth
- API Key (CI/CD): Bearer token authentication
- Use HTTPS in production (configure reverse proxy)
- Rotate API keys regularly
- Enable GitHub OAuth for contributor authentication
- Set strong admin passwords (16+ characters)
- Keep the server updated
We welcome contributions! See CONTRIBUTING.md for:
- Development setup
- Module specification
- Testing guidelines
- Code conventions
For Clio client changes, visit the Clio repository.
- CLIO_API_REQUIREMENTS.md - API specification for clients
- CLIO_MIGRATION_GUIDE.md - Migration from CLIPilot to Clio
- TERMUX.md - Android/Termux deployment guide
- ADMIN_SETUP.md - Admin user creation guide
- TESTING.md - Testing procedures
Check that the registry is accessible:
curl https://your-registry.com/healthReset admin password:
DB_PATH=./data/registry.db ./scripts/create-admin.shVerify the key is active:
sqlite3 ./data/registry.db "SELECT * FROM api_keys WHERE revoked = 0"MIT License - see LICENSE for details.
Part of the CLIPilot ecosystem:
- CLIPilot Registry (this repo) - Server
- Clio - CLI Client
Made with β€οΈ for developers automating their workflows