Deploy your Streamline automations directly from GitHub with automatic synchronization. Every time you push code, your automation updates automatically.
GitHub deployment provides:
- Automatic Sync: Push to GitHub, and your automation updates automatically
- Version Control: Full Git history for your automation code
- Collaboration: Work with your team using standard Git workflows
- Webhook Integration: GitHub notifies Streamline of code changes
- GitHub account with repository access
- Freddy account with Streamline access
- Aitronos CLI installed (installation guide)
- GitHub Personal Connector configured in Freddy Hub
Before deploying, connect your GitHub account to Freddy:
- Go to Freddy Hub
- Navigate to Settings → Personal Connectors
- Click Connect next to GitHub
- Authorize Freddy to access your GitHub account
- Select the repositories you want to grant access to
The CLI can create a repository for you:
# Create a new repository
aitronos streamline repo create \
--name my-automation \
--description "My Streamline automation" \
--private
# Output:
# ✓ Repository created: https://github.com/your-username/my-automation
# ✓ Clone URL: https://github.com/your-username/my-automation.gitCreate a repository manually on GitHub:
- Go to GitHub
- Enter repository name (e.g.,
my-automation) - Choose visibility (Public or Private)
- Click Create repository
Ensure your project has the required structure:
my-automation/
├── streamline.yaml # Required: Automation configuration
├── main.py # Your automation code
├── requirements.txt # Python dependencies
├── .gitignore # Git ignore file
└── README.md # Documentationstreamline.yaml (required):
name: my-automation
description: Description of what this automation does
execution_file: main.py
parameters:
- name: param1
type: string
required: false
default: "default_value".gitignore:
__pycache__/
*.pyc
*.pyo
*.pyd
.Python
*.so
*.egg
*.egg-info/
dist/
build/
.venv/
venv/
.env
.DS_StoreInitialize Git and push your code:
# Initialize git repository
git init
git add .
git commit -m "Initial commit"
# Add remote (use URL from Step 2)
git remote add origin https://github.com/your-username/my-automation.git
# Push to GitHub
git branch -M main
git push -u origin main# Deploy from GitHub repository
aitronos streamline deploy \
--repo https://github.com/your-username/my-automation.git \
--branch main \
--name "My Automation"
# Output:
# ✓ Automation uploaded from Git
# ✓ Automation ID: auto_abc123def456
# ✓ GitHub webhook configured
# ✓ Automatic sync enabledcurl -X POST "https://api.aitronos.com/v1/streamline/automations/upload/git?organization_id=org_xyz" \
-H "Authorization: Bearer $FREDDY_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"git_url": "https://github.com/your-username/my-automation.git",
"branch": "main",
"automation_name": "My Automation"
}'After deployment, verify the webhook was created:
- Go to your GitHub repository
- Navigate to Settings → Webhooks
- You should see a webhook pointing to:
https://api.aitronos.com/v1/streamline/webhooks/github
The webhook triggers on push events to automatically sync your automation.
- You push code to GitHub
- GitHub sends a webhook to Streamline
- Streamline pulls the latest code
- Your automation is updated automatically
- Next execution uses the new code
Developer Push → GitHub Webhook → Streamline Sync → Updated AutomationTrigger a manual sync if needed:
# Using CLI
aitronos streamline sync <automation-id>
# Using API
curl -X POST "https://api.aitronos.com/v1/streamline/automations/{automation_id}/sync" \
-H "Authorization: Bearer $FREDDY_SESSION_TOKEN"You can host multiple automations in a single repository using subdirectories.
my-automations-repo/
├── automation-1/
│ ├── streamline.yaml
│ ├── main.py
│ └── requirements.txt
├── automation-2/
│ ├── streamline.yaml
│ ├── main.py
│ └── requirements.txt
└── README.md# Deploy automation-1
aitronos streamline deploy \
--repo https://github.com/your-username/my-automations-repo.git \
--branch main \
--subdirectory automation-1 \
--name "Automation 1"
# Deploy automation-2
aitronos streamline deploy \
--repo https://github.com/your-username/my-automations-repo.git \
--branch main \
--subdirectory automation-2 \
--name "Automation 2"Both automations will sync automatically when you push to the repository.
Deploy from different branches for staging/production:
# Deploy from development branch
aitronos streamline deploy \
--repo https://github.com/your-username/my-automation.git \
--branch development \
--name "My Automation (Dev)"
# Deploy from main branch
aitronos streamline deploy \
--repo https://github.com/your-username/my-automation.git \
--branch main \
--name "My Automation (Prod)"Each deployment syncs independently based on its configured branch.
# Development workflow
git checkout -b feature/new-feature
# ... make changes ...
git commit -m "Add new feature"
git push origin feature/new-feature
# Merge to development
git checkout development
git merge feature/new-feature
git push origin development
# → Dev automation syncs automatically
# After testing, merge to main
git checkout main
git merge development
git push origin main
# → Production automation syncs automaticallyTo stop automatic synchronization:
# Using CLI
aitronos streamline disconnect <automation-id>
# Using API
curl -X DELETE "https://api.aitronos.com/v1/streamline/automations/{automation_id}/github/disconnect" \
-H "Authorization: Bearer $FREDDY_SESSION_TOKEN"This removes the webhook from GitHub and clears the Git configuration. Your automation code is preserved.
# Using CLI
aitronos streamline sync-history <automation-id>
# Using API
curl "https://api.aitronos.com/v1/streamline/automations/{automation_id}/syncs" \
-H "Authorization: Bearer $FREDDY_SESSION_TOKEN"Each sync creates a job with status:
pending: Sync queuedin_progress: Currently syncingcompleted: Sync successfulfailed: Sync failed (check error message)
Check webhook configuration:
- Go to GitHub repository → Settings → Webhooks
- Click on the Streamline webhook
- Check "Recent Deliveries" for errors
- Verify the webhook URL is correct
Re-create webhook:
# Disconnect and reconnect
aitronos streamline disconnect <automation-id>
aitronos streamline connect <automation-id> \
--repo https://github.com/your-username/my-automation.git \
--branch mainCheck sync job details:
aitronos streamline sync-history <automation-id> --limit 1Common issues:
- Invalid
streamline.yamlformat - Missing required files
- Python syntax errors
- Repository access denied
Reconnect GitHub:
- Go to Freddy Hub → Personal Connectors
- Disconnect GitHub
- Reconnect and re-authorize
Protect your main branch:
- Require pull request reviews
- Require status checks to pass
- Prevent force pushes
Test changes in a development branch before merging to main:
# Create feature branch
git checkout -b feature/my-feature
# Deploy to test automation
aitronos streamline deploy \
--repo https://github.com/your-username/my-automation.git \
--branch feature/my-feature \
--name "My Automation (Test)"
# Test the automation
aitronos streamline execute <test-automation-id>
# If successful, merge to main
git checkout main
git merge feature/my-feature
git push origin mainTag releases for easy rollback:
git tag -a v1.0.0 -m "Release version 1.0.0"
git push origin v1.0.0Maintain a CHANGELOG.md:
# Changelog
## [1.0.0] - 2025-11-27
### Added
- Initial release
- Basic automation functionality
## [1.1.0] - 2025-11-28
### Added
- New parameter for custom messages
### Fixed
- Error handling for API failuresSet up monitoring for sync failures:
# Check sync metrics
curl "https://api.aitronos.com/v1/streamline/metrics/sync" \
-H "Authorization: Bearer $FREDDY_SESSION_TOKEN"- Scheduling - Schedule your automation to run automatically
- Parameters - Configure automation parameters
- Best Practices - Follow recommended patterns
- API Reference - Complete API documentation
Need help with GitHub deployment?
- Email: support@aitronos.com
- Hub: Freddy Hub
- Documentation: Streamline Overview