Edgit extends Git with component-aware versioning. It tracks components (prompts, configs, queries, scripts, schemas), agents, and ensembles in a registry, uses Git tags for semantic versioning, and provides deployment tracking.Everything lives in Git. No proprietary storage. No vendor database. You own the source of truth.
Modern AI systems have hundreds of independently evolving pieces:
50+ prompts
20+ agent implementations
Dozens of SQL queries
Multiple config files
Various scripts and transforms
Traditional approach: Everything gets the same version number. Change one prompt, bump the entire app to v2.0.0. Want to rollback? Revert the entire codebase.Edgit approach: Each component versions independently. Mix optimal versions from different points in time. Rollback one component without touching anything else.
Copy
# Version components independentlyedgit tag create extraction-prompt v1.0.0edgit tag create company-agent v2.1.0edgit tag create validation-query v0.5.0edgit tag create invoice-schema v1.0.0edgit tag create data-pipeline v1.0.0 # TypeScript ensemble# Deploy optimal combinationedgit deploy set extraction-prompt v0.1.0 --to prod # Ancient but perfectedgit deploy set company-agent v3.0.0 --to prod # Latest stableedgit deploy set invoice-schema v1.0.0 --to prod # Structured outputsedgit deploy set data-pipeline v1.0.0 --to prod # Ensemble workflow# Rollback one component instantlyedgit deploy set extraction-prompt v0.1.0 --to prod # <50ms globally
Components are versioned artifacts that agents use:
Prompts (.md) - AI instructions
Configs (.json, .yaml) - Settings
Queries (.sql) - Database queries
Scripts (.js, .ts) - Reusable functions
Schemas (.json) - JSON Schema for structured AI outputs
Each gets its own version history via Git tags.
Copy
# Create versionedgit tag create my-prompt v1.0.0# List versionsedgit tag list my-prompt# Output: v1.0.0, v1.1.0, v1.2.0# View changesgit show components/my-prompt/v1.0.0
Agents are workers that execute tasks. They can also be versioned independently:
Copy
# Version agent implementationsedgit tag create scraper v1.5.0 --type=agentedgit tag create analyzer v2.0.0 --type=agent# Deploy specific versionsedgit deploy set scraper v1.5.0 --to prodedgit deploy set analyzer v2.0.0 --to prod
Now you can reference versioned agents in ensembles:
Copy
ensemble: my-workflowagents: - name: scraper agent: [email protected] # Locked to specific version - name: analyzer agent: [email protected] # Different version component: [email protected] # With specific prompt version
Ensembles are workflow definitions that orchestrate agents. They can be written in YAML or TypeScript:
Copy
# Version TypeScript ensemblesedgit tag create data-pipeline v1.0.0 --type=ensemble# Version YAML ensemblesedgit tag create scraping-workflow v2.0.0 --type=ensemble# Deploy specific versionsedgit deploy set data-pipeline v1.0.0 --to prod
Edgit is 100% Git-compatible. Every git command works as an edgit command.
Copy
# Use edgit for all version control (via ensemble CLI)ensemble edgit initensemble edgit add src/ensemble edgit commit # AI-powered if OPENAI_API_KEY setensemble edgit push origin mainensemble edgit checkout -b feature/new-promptensemble edgit merge main
Reproduce bugs from last week by recreating the exact environment:
Copy
# What was deployed on Tuesday at 2:47 PM?edgit history --date="2024-11-05T14:47:00Z"# Recreate that exact environmentedgit deploy set extraction-prompt v3.1.0 --to debugedgit deploy set processor v1.9.2 --to debug