From Prototype to Production
Moving an agent from a local test run to a production environment requires tightening security, managing costs, and configuring observability pipelines. Do not merge a system.json to main without completing this checklist.
The Pre-Production Checklist
- [ ] 1. Security Level Review: Ensure the agent's
security_levelinconfigis set tohighorcriticalif it has no outbound HTTP requirements. Decrease it fromlowimmediately if left from local testing. - [ ] 2. Domain Allowlist: If using the
http_requesttool, specify the exact array ofallowed_domainsin your agent.json. - [ ] 3. Timeout Limits: Adjust
timeout_secondsdown to the smallest possible window. Do not leave the 1-hour default running. - [ ] 4. Error Boundaries: Set your
retry_limitsensibly (usually 3). - [ ] 5. Alerting Setup: In the Savine Dashboard, go to Settings > Alerting and configure Webhook or Slack alerts for
LoopDetection,TaskFailed, andDailyBudgetHitevents. - [ ] 6. CI/CD Integration: Check that the GitHub app is installed on your production repository to enable automatic schema validation on Pull Requests.
- [ ] 7. API Key Rotation: If your prototype used personal API keys (e.g. your OpenAI account), generate service-account API keys, and update them securely using
savine config set. - [ ] 8. System Architecture Validated: Before going live, run
savine systems validate system.jsonon your exact deployed infrastructure files.
Load Testing
Savine automatically scales sandboxes horizontally. However, your BYOK LLM Provider (OpenAI, Anthropic) enforces steep "Tokens per Minute" rate limits.
If you hammer Savine with 1,000 tasks concurrently, the sandboxes will spin up instantly, but OpenAI will likely return HTTP 429 Too Many Requests.
The Solution: Set the max_concurrency setting in the system.json config. Savine will hold excess tasks in the QUEUED state until your LLM provider's rate limits lift.
Auto-Deploy Configuration
- Connect GitHub in the Savine Dashboard.
- Select your production repository.
- Every commit pushed to
maininstantly triggers a redeploy if the configuration hashes have changed. - Old versions are kept historically. You can unarchive a bad automated deployment by clicking Rollback in the UI.