Skip to main content

What Edgit Does

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.

The Problem It Solves

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.
# Version components independently
edgit tag create extraction-prompt v1.0.0
edgit tag create company-agent v2.1.0
edgit tag create validation-query v0.5.0
edgit tag create invoice-schema v1.0.0
edgit tag create data-pipeline v1.0.0     # TypeScript ensemble

# Deploy optimal combination
edgit deploy set extraction-prompt v0.1.0 --to prod  # Ancient but perfect
edgit deploy set company-agent v3.0.0 --to prod      # Latest stable
edgit deploy set invoice-schema v1.0.0 --to prod     # Structured outputs
edgit deploy set data-pipeline v1.0.0 --to prod      # Ensemble workflow

# Rollback one component instantly
edgit deploy set extraction-prompt v0.1.0 --to prod  # <50ms globally

Core Features

Component Versioning

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.
# Create version
edgit tag create my-prompt v1.0.0

# List versions
edgit tag list my-prompt
# Output: v1.0.0, v1.1.0, v1.2.0

# View changes
git show components/my-prompt/v1.0.0

Agent Versioning

Agents are workers that execute tasks. They can also be versioned independently:
# Version agent implementations
edgit tag create scraper v1.5.0 --type=agent
edgit tag create analyzer v2.0.0 --type=agent

# Deploy specific versions
edgit deploy set scraper v1.5.0 --to prod
edgit deploy set analyzer v2.0.0 --to prod
Now you can reference versioned agents in ensembles:
ensemble: my-workflow

agents:
  - name: scraper
    agent: [email protected]      # Locked to specific version

  - name: analyzer
    agent: [email protected]     # Different version
    component: [email protected]   # With specific prompt version

Ensemble Versioning

Ensembles are workflow definitions that orchestrate agents. They can be written in YAML or TypeScript:
# Version TypeScript ensembles
edgit tag create data-pipeline v1.0.0 --type=ensemble

# Version YAML ensembles
edgit tag create scraping-workflow v2.0.0 --type=ensemble

# Deploy specific versions
edgit deploy set data-pipeline v1.0.0 --to prod
TypeScript ensembles provide full type safety:
// ensembles/data-pipeline.ts
import { createEnsemble, step, parallel } from '@ensemble-edge/conductor'

export default createEnsemble('data-pipeline')
  .addStep(
    parallel('analyze')
      .steps(
        step('sentiment').operation('think').config({ prompt: '...' }),
        step('entities').operation('think').config({ prompt: '...' })
      )
  )
  .build()
Ensemble Git tags use their own namespace:
# Ensemble tags
ensembles/data-pipeline/v1.0.0
ensembles/data-pipeline/prod
ensembles/scraping-workflow/v2.0.0

Deployment Tracking

Know exactly what’s deployed where:
# Mark as deployed
edgit deploy set my-prompt v1.0.0 --to prod

# Check status
edgit components list --format tree
# Output:
# my-prompt (prompt)
#  v1.0.0 [prod]
#  v0.9.0 [staging]
#  v0.1.0

# View deployment history
edgit history my-prompt
# Output:
# production: v1.0.0 (deployed 2025-11-01 14:30)
# staging: v0.9.0 (deployed 2025-10-28 10:15)

Git Tag Namespace

Components, agents, and ensembles use separate Git tag namespaces:
# Component tags
components/extraction-prompt/v1.0.0
components/extraction-prompt/prod

# Agent tags
agents/scraper/v1.5.0
agents/scraper/prod

# Ensemble tags
ensembles/data-pipeline/v1.0.0
ensembles/data-pipeline/prod
This keeps versioning clean and prevents naming collisions.

Component Discovery

Find and register components automatically:
# Scan repository for components
edgit discover scan --type prompt
# Found 12 prompt files

# Scan for TypeScript ensembles
edgit discover scan --type ensemble
# Found 5 ensemble files

# Detect component type
edgit discover detect src/my-function.ts
# Type: script
# Confidence: 95%
# Suggested name: my-function

# Detect TypeScript ensemble
edgit discover detect ensembles/data-pipeline.ts
# Type: ensemble
# Confidence: 95%
# Suggested name: data-pipeline

# List untracked components
edgit components list --untracked
# Shows files detected as components but not yet registered

Use Edgit For Everything

Edgit is 100% Git-compatible. Every git command works as an edgit command.
# Use edgit for all version control (via ensemble CLI)
ensemble edgit init
ensemble edgit add src/
ensemble edgit commit  # AI-powered if OPENAI_API_KEY set
ensemble edgit push origin main
ensemble edgit checkout -b feature/new-prompt
ensemble edgit merge main

Why Use Edgit Instead of Git?

Muscle Memory

Type edgit for all operations. No mental switching between tools.

Component Awareness

Edgit understands your components in ALL operations - not just tagging.

Future Features

We can enhance any Git command later (smarter merging, better diffs, etc.)

Zero Conflicts

Edgit passes through to Git for standard operations. Identical behavior.

The Versioning Multiverse

With independent versioning of components, agents, AND ensembles, you unlock infinite combinations:
  • YAML
  • TypeScript
# Test matrix:
# 2 agent versions × 3 prompt versions × 2 configs = 12 variants

ensemble: multiverse-test

agents:
  # Variant 1: Stable everything
  - name: stable
    agent: [email protected]
    component: [email protected]
    config: [email protected]

  # Variant 2: New agent, old prompt
  - name: new-agent-old-prompt
    agent: [email protected]
    component: [email protected]
    config: [email protected]

  # ... 10 more combinations for A/B testing

Time Travel

Reproduce bugs from last week by recreating the exact environment:
# What was deployed on Tuesday at 2:47 PM?
edgit history --date="2024-11-05T14:47:00Z"

# Recreate that exact environment
edgit deploy set extraction-prompt v3.1.0 --to debug
edgit deploy set processor v1.9.2 --to debug

Next Steps

Edgit is open source and free to use. Version data lives in your Git repository, not our servers.You own everything.