● FOR HUMANS You are here
DIFF · ROLLBACK · AUDIT
EVERY CHANGE TRACKED · EVERY ACTION REVERSIBLE
2026

VERSION.CTRL
BUILT-IN HISTORY

Git for your business operations.

Every schema migration, every API version, every configuration change — tracked with full diffs, attributed to the human or agent that made it, and rollbackable in one API call.

Full diff history One-call rollback Agent-attributed
The Problem

Why Version Control For Business Apps?

When a human accidentally deletes 500 invoices, you need to know who did it, when, and you need to undo it. When an autonomous agent modifies your chart of accounts at 3am, you need the same guarantees.

Traditional SaaS gives you an audit log — a list of events. ERP.AI gives you version control: full diffs showing exactly what changed, the ability to roll back any change to any point in time, and attribution that works for both human users and autonomous agents.

When an agent modifies your chart of accounts at 3am, you need version control.

— The Case for VCS
How It Works

Diffs, Rollbacks, and Attribution

Diffs. Every write operation generates a structured diff. Schema changes show the before/after. Record modifications show field-level changes. Configuration updates show the full delta.

Rollback. POST /v1/rollback/{version_id} reverts any change. Single records, bulk operations, or schema migrations — all rollbackable. The rollback itself is versioned, so you can undo the undo.

Attribution. Every version entry records the caller: human user ID or agent ID (AGT-XXXX). Token budget consumed. Timestamp. IP address. The full chain of causation.

Version Control

Every Change Tracked

migrations/2026-04-13-add-agent-budget.sql
Schema Migration
ALTER TABLE agents
- -- no budget tracking
+ ADD COLUMN budget_tokens INT DEFAULT 50000,
+ ADD COLUMN budget_spent INT DEFAULT 0,
+ ADD COLUMN budget_alert BOOLEAN DEFAULT true;
CREATE INDEX idx_agents_budget ON agents(budget_tokens);
routes/v1/agents.ts
API Endpoint Update
router.get('/v1/agents/:id', async (req, res) => {
- const agent = await db.agents.findOne(req.params.id);
+ const agent = await db.agents.findOneWithBudget(req.params.id);
+ res.set('X-Budget-Remaining', agent.budget_tokens - agent.budget_spent);
res.json(agent);
});
Capabilities

What Gets Versioned

Schema Changes

Table creation, column additions, index changes. Full DDL diffs.

Record Mutations

Field-level before/after for every create, update, and delete.

Configuration

RBAC policies, rate limits, webhook configs. Every change diffed.

API Versions

Endpoint deprecation, response schema changes. Migration guides auto-generated.

Version Control FAQ

Common Questions

How far back can I roll back?

Depends on your tier. Free: 7 days. PAYG/Growth: 90 days. Enterprise: unlimited retention. Managed Services: configurable.

Does rollback work on bulk operations?

Yes. If an agent bulk-updates 10,000 records, you can roll back the entire batch in one API call. Each individual record change is also independently rollbackable.

Are agent actions attributed the same as human actions?

Yes. Every version entry records the caller type (human or agent), their ID, the operation, and the token cost. The audit trail is identical for both.

Is there a performance cost to versioning?

Minimal. Version records are append-only and stored in a separate partition. Write latency increases by < 5ms. Read performance is unaffected.

Can I export version history?

Yes. GET /v1/versions with date range, entity type, and caller filters. Export as JSON or CSV. Enterprise tier supports streaming export to your data warehouse.

Version Control Built In

Every Change Tracked.
Every Action Reversible.

Full diffs, one-call rollback, human + agent attribution. Version control isn't a feature — it's the foundation.

Full diffs · One-call rollback · Agent attribution · Unlimited retention (Enterprise)