Skip to main content

Fla: Feature Lanes for Agents - version control for agentic AI systems

Project description

Fla: Feature Lanes for Agents

Version Control for Agentic AI Systems

Tests Python 3.10+ License: MIT

Version control designed from the ground up for AI agents. Replaces git's line-diff model with intent-based snapshots, physically isolated workspaces, and evaluation gating.

Why Fla?

Git assumes a single human making small, curated edits. AI agents break every part of that model.

Git Fla
Unit of work Line diffs Full world-state snapshots
Change metadata Free-text commit message Structured intent + agent identity
Quality gate CI runs after merge Evaluation gating before accept
Parallel agents Branch conflicts Physically isolated workspaces
Cost tracking None Per-transition token/API accounting

Quick Demo

cd my-project
fla init
# Writes files, then commits in one step:
fla commit --prompt "Add auth module" \
  --agent-id coder-1 --agent-type feature_dev --auto-accept

# Create isolated feature lane
fla lane create feature-auth

# Work in isolation, promote back to main
fla promote --workspace feature-auth --target main --auto-accept

# Query history
fla history --lane main

Or use the Python SDK:

from fla.agent_sdk import AgentSession

session = AgentSession(
    repo_path="./my-project",
    agent_id="coder-alpha",
    agent_type="feature_developer",
)

with session.work("Add authentication module", tags=["auth"], auto_accept=True) as w:
    (w.path / "auth.py").write_text("def authenticate(): ...")
    w.record_tokens(tokens_in=2000, tokens_out=1200)
# On exit: snapshots -> proposes -> accepts (or rejects on exception)

See examples/ for runnable demos.

Installation

pip install fla

# Optional: remote storage backends
pip install fla[s3]    # Amazon S3 (boto3)
pip install fla[gcs]   # Google Cloud Storage

Core Concepts

World States: Immutable snapshots of the entire project. Agents propose new world states, not diffs.

Intents: Structured metadata for every change: the instruction, who issued it, cost tracking, and semantic tags.

Transitions: Proposals to move from one state to another. Must be evaluated before acceptance.

Lanes: Isolated workstreams. Work is promoted into a target lane through evaluation, not merged.

Workspaces: Main workspace is the repo root (git-style). Feature lanes get physically isolated directories under .fla/workspaces/.

Architecture

+--------------------------------------------------+
|                 CLI / Agent SDK                    |
|       (fla commands / AgentSession API)            |
+--------------------------------------------------+
|                  Repository                        |
|   (propose, accept, promote, restore, etc)         |
+--------------------+-----------------------------+
|  WorkspaceManager  |     WorldStateManager        |
|  (isolation,       |  (states, transitions,        |
|   locking,         |   lanes, history, trace,      |
|   materialization) |   conflict detection)          |
+--------------------+-----------------------------+
|             Content-Addressed Store                |
|    (SHA-256 blobs + trees, dedup, integrity)       |
+--------------------------------------------------+
|                    SQLite                           |
|         (WAL mode, single-file database)           |
+--------------------------------------------------+

Key Features

  • Git-style main: repo root IS the main workspace. Files stay where you expect them.
  • Physical isolation: feature workspaces are real directories. Parallel agents can't stomp on each other.
  • Smart incremental updates: workspace sync writes only changed files, not the entire tree.
  • Cross-platform locking: atomic mkdir locking works on Linux, macOS, and Windows.
  • Conflict detection: promote finds path-level collisions without content merging.
  • Evaluators: run pytest, ruff, or custom checks as gates before accepting transitions.
  • Cost tracking: per-transition token usage, wall time, and API call counts.
  • Git bridge: fla export-git / fla import-git for CI integration.
  • Remote storage: S3/GCS-backed sync for team collaboration.
  • MCP server: expose Fla as tools for LLM integration via Model Context Protocol.
  • REST API: fla serve starts a multi-threaded HTTP API.
  • Garbage collection: fla gc removes rejected states and unreachable objects.

Documentation

Workspace Layout

my-project/
+-- .fla/
|   +-- config.json
|   +-- store.db                        # SQLite database
|   +-- main.json                       # main workspace metadata
|   +-- workspaces/
|       +-- feature-auth/               # isolated feature workspace
|       +-- feature-auth.json
+-- app.py                              # YOUR FILES AT REPO ROOT
+-- lib/

Running Tests

pip install -e ".[dev]"
python -X utf8 -m pytest tests/ -v

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flanes-0.3.0.tar.gz (150.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

flanes-0.3.0-py3-none-any.whl (95.4 kB view details)

Uploaded Python 3

File details

Details for the file flanes-0.3.0.tar.gz.

File metadata

  • Download URL: flanes-0.3.0.tar.gz
  • Upload date:
  • Size: 150.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.6

File hashes

Hashes for flanes-0.3.0.tar.gz
Algorithm Hash digest
SHA256 7d9db2de70edbfa7a172509fe7809e2b54a186c9c5c95e3bae638a19864a4136
MD5 ca0ff31bf38014805e23ae97d79bcc47
BLAKE2b-256 8203d5610b54dcb371363c8f237dc23e96febadf3002d76cf3d3b1341bec71b4

See more details on using hashes here.

File details

Details for the file flanes-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: flanes-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 95.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.6

File hashes

Hashes for flanes-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3ba1dc743a0ee9ff12d2826ad850beaaa9ab833c32f511b8ed1cbcc15abf1633
MD5 7f7382be611637c255b2b95236e40ac1
BLAKE2b-256 949f08a02d574be82b45efa96f176dabf591c14a9f6071fbde38121c36173bb0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page