The geai migrate clone-project diff command allows you to compare two Globant Enterprise AI projects to identify differences in their resources.
This is particularly useful for:
- Pre-Migration Planning: Understand what will be migrated before running a migration.
- Post-Migration Verification: Verify that a migration completed successfully by comparing source and destination.
- Environment Drift Detection: Identify configuration drift between development, staging, and production environments.
- Audit and Compliance: Document differences between projects for compliance purposes.
- CI/CD Integration: Automate drift detection in continuous deployment pipelines.
Project and organization IDs are automatically detected from API keys when not explicitly provided.
Generate comparison reports in text, JSON, or Markdown format.
Compare all resources or filter by specific resource types (agents, tools, processes, etc.).
Compare projects across different GEAI instances (dev vs prod, QA vs staging).
Save comparison results to files for documentation or further analysis.
Supports all resource types:
geai migrate diff \
--from-api-key "source_api_key_123" \
--from-instance "https://api.qa.example.ai" \
--to-api-key "destination_api_key_456" \
--to-instance "https://api.prod.example.ai"
This command automatically detects project and organization IDs from the API keys and compares all resource types.
geai migrate diff \
--from-api-key "source_api_key_123" \
--from-instance "https://api.qa.example.ai" \
--from-project-id "proj-qa-001" \
--to-api-key "destination_api_key_456" \
--to-instance "https://api.prod.example.ai" \
--to-project-id "proj-prod-001"
geai migrate diff \
--from-api-key "source_api_key" \
--from-instance "https://api.qa.example.ai" \
--to-api-key "dest_api_key" \
--to-instance "https://api.prod.example.ai" \
--format text
geai migrate diff \
--from-api-key "source_api_key" \
--from-instance "https://api.qa.example.ai" \
--to-api-key "dest_api_key" \
--to-instance "https://api.prod.example.ai" \
--format json \
--output diff-report.json
geai migrate diff \
--from-api-key "source_api_key" \
--from-instance "https://api.qa.example.ai" \
--to-api-key "dest_api_key" \
--to-instance "https://api.prod.example.ai" \
--format markdown \
--output PROJECT_DIFF_REPORT.md
geai migrate diff \
--from-api-key "source_api_key" \
--from-instance "https://api.qa.example.ai" \
--to-api-key "dest_api_key" \
--to-instance "https://api.prod.example.ai" \
--resource-types agents
geai migrate diff \
--from-api-key "source_api_key" \
--from-instance "https://api.qa.example.ai" \
--to-api-key "dest_api_key" \
--to-instance "https://api.prod.example.ai" \
--resource-types agents,tools
geai migrate diff \
--from-api-key "source_api_key" \
--from-instance "https://api.qa.example.ai" \
--to-api-key "dest_api_key" \
--to-instance "https://api.prod.example.ai" \
--resource-types processes,tasks,artifact_types
Before migrating from QA to production, understand what will change:
geai migrate diff \
--from-api-key "qa_api_key" \
--from-instance "https://api.qa.example.ai" \
--to-api-key "prod_api_key" \
--to-instance "https://api.prod.example.ai" \
--format markdown \
--output pre-migration-analysis.md
Verify that your migration completed successfully:
geai migrate diff \
--from-api-key "source_api_key" \
--from-instance "https://api.source.example.ai" \
--to-api-key "migrated_api_key" \
--to-instance "https://api.target.example.ai" \
--format text
Expected output for a successful migration:
No differences found
(for all resource types)
Automate drift detection in your pipeline:
geai migrate diff \
--from-api-key "dev_api_key" \
--from-instance "https://api.dev.example.ai" \
--to-api-key "prod_api_key" \
--to-instance "https://api.prod.example.ai" \
--format json \
--output drift-report.json
# Parse JSON output in your CI/CD pipeline
# Exit with error if differences are found
Fast check for agent differences only:
geai migrate diff \
--from-api-key "qa_api_key" \
--from-instance "https://api.qa.example.ai" \
--to-api-key "prod_api_key" \
--to-instance "https://api.prod.example.ai" \
--resource-types agents \
--format text
================================================================================
PROJECT COMPARISON REPORT
================================================================================
Source Project: proj-qa-001 (QA Environment)
Destination Project: proj-prod-001 (Production)
Resource Type: agents
───────────────────────────────────────────────────────────────────────────────
Only in source (3):
- Customer Support Agent (agent-001)
- Sales Assistant (agent-002)
- HR Onboarding Agent (agent-003)
Only in destination (1):
- Legacy Support Bot (agent-legacy-001)
In both projects (5):
✓ Data Analyst Agent (agent-shared-001)
✓ Email Composer Agent (agent-shared-002)
...
Summary: 3 unique to source, 1 unique to destination, 5 in common
{
"source_project_id": "proj-qa-001",
"destination_project_id": "proj-prod-001",
"comparison_timestamp": "2025-01-15T10:30:00Z",
"differences": {
"agents": {
"only_in_source": "agent-001", "agent-002", "agent-003",
"only_in_destination": "agent-legacy-001",
"in_both": "agent-shared-001", "agent-shared-002"
},
"tools": {
"only_in_source": [],
"only_in_destination": [],
"in_both": "tool-001", "tool-002"
}
}
}
To compare organization-level resources such as files and usage_limits, you must provide organization API keys.
geai migrate diff \
--from-api-key "source_api_key" \
--from-instance "https://api.qa.example.ai" \
--from-organization-api-key "source_org_key" \
--to-api-key "dest_api_key" \
--to-instance "https://api.prod.example.ai" \
--to-organization-api-key "dest_org_key" \
--resource-types files
geai migrate diff \
--from-api-key "source_api_key" \
--from-instance "https://api.qa.example.ai" \
--from-organization-api-key "source_org_key" \
--to-api-key "dest_api_key" \
--to-instance "https://api.prod.example.ai" \
--to-organization-api-key "dest_org_key" \
--resource-types usage_limits
Since version 2026-02