--- language: - en base_model: - briaai/Fibo-Edit pipeline_tag: image-to-image library_name: diffusers extra_gated_description: >- Bria AI Model weights are open source for non commercial use only, per the provided [license](https://creativecommons.org/licenses/by-nc/4.0/deed.en). extra_gated_heading: Fill in this form to immediately access the model for non commercial use extra_gated_fields: Name: text Email: text Company/Org name: text Company Website URL: text Discord user: text I agree to BRIA's Privacy policy, Terms & conditions, and acknowledge Non commercial use to be Personal use / Academy / Non profit (direct or indirect): checkbox license: other license_name: bria-fibo-edit license_link: https://creativecommons.org/licenses/by-nc/4.0/deed.en tags: - art - image-to-image - image-editing - inpainting ---

GitHub Repo   Hugging Face Demo   Bria Platform   Bria Discord

Fibo Edit Hero Image

FIBO-Edit brings the power of structured prompt generation to image editing.
Built on Fibo's foundation and of JSON-native control, FIBO-Edit delivers precise, deterministic, and fully controllable edits. No ambiguity, no surprises.

🌍 What's Fibo Edit?

Most image editing models rely on loose, ambiguous text prompts, but not FIBO-Edit. FIBO-Edit introduces a new paradigm of structured control, operating on structured JSON inputs paired with a source image (and optionally a mask). This enables explicit, interpretable, and repeatable editing workflows optimized for professional production environments.

Developed by Bria AI, FIBO-Edit prioritizes transparency, legal safety, and granular control: ranking among the top models in open benchmarks for prompt adherence and quality.

📄 Technical report coming soon. For architecture details, see FIBO.

📐 The VGL Paradigm

FIBO-Edit is natively built on Visual GenAI Language (VGL). VGL standardizes image generation by replacing vague natural language descriptions with explicit, human-machine-readable JSON. By disentangling visual elements—such as lighting, composition, style, and camera parameters—VGL transforms editing from a probabilistic guessing game into a deterministic engineering task. Fibo-Edit reads these structured blueprints to perform precise updates without prompt drift, ensuring the output matches your exact specifications.

News

🔑 Key Features

⚡ Quick Start

🚀 Try Fibo Edit now →

Fibo Edit is available everywhere you build, either as source-code and weights, ComfyUI nodes or API endpoints.

API Endpoint:

Source-Code & Weights

Quick Start Guide

clone the repository and install the requirements

git clone https://github.com/Bria-AI/Fibo-Edit.git
cd Fibo-Edit

install the requirements

uv sync
source .venv/bin/activate
export PYTHONPATH=.

Promptify Setup

The repository supports two modes for generating structured JSON prompts:

API Mode (default): Uses Gemini as the VLM. Set your API key:

export GEMINI_API_KEY="your-api-key"

Local Mode: Uses a local VLM model (briaai/FIBO-edit-prompt-to-JSON) via diffusers ModularPipelineBlocks. Runs locally on your GPU.

Note: Local VLM mode does not support mask-based editing. Use API mode for masked edits.

Image + Mask (API Mode)

Benchmark Chart ```python import torch from diffusers import BriaFiboEditPipeline from PIL import Image from src.edit_promptify import get_prompt # Generate structured JSON using API mode image = Image.open("photo.jpg") mask_image = Image.open("mask.jpg").convert("L") edit_json = get_prompt(image=image, instruction="make it look vintage", mask_image=mask_image) # Use with Fibo Edit pipe = BriaFiboEditPipeline.from_pretrained( "briaai/Fibo-Edit", torch_dtype=torch.bfloat16, ) pipe.to("cuda") result = pipe( image=image, mask=mask, prompt=edit_json, num_inference_steps=50, guidance_scale=5 ).images[0] result.save("edited.png") ```

Only Image (API Mode)

Benchmark Chart ```python import torch from diffusers import BriaFiboEditPipeline from PIL import Image from src.edit_promptify import get_prompt # Generate structured JSON using API mode image = Image.open("photo.jpg") edit_json = get_prompt(image, "make it look vintage") # Use with Fibo Edit pipe = BriaFiboEditPipeline.from_pretrained( "briaai/Fibo-Edit", torch_dtype=torch.bfloat16, ) pipe.to("cuda") result = pipe( image=image, prompt=edit_json, num_inference_steps=50, guidance_scale=5 ).images[0] result.save("edited.png") ```

Only Image (Local VLM Mode)

```python import torch from diffusers import BriaFiboEditPipeline from PIL import Image from src.edit_promptify import get_prompt # Generate structured JSON using local VLM image = Image.open("photo.jpg") edit_json = get_prompt( image=image, instruction="make it look vintage", vlm_mode="local", model="briaai/FIBO-edit-prompt-to-JSON" ) # Use with Fibo Edit pipe = BriaFiboEditPipeline.from_pretrained( "briaai/Fibo-Edit", torch_dtype=torch.bfloat16, ) pipe.to("cuda") result = pipe( image=image, prompt=edit_json, num_inference_steps=50, guidance_scale=5 ).images[0] result.save("edited.png") ```

CLI Usage

```bash # API mode (default) python src/example_edit.py --images photo.jpg --instructions "change the car color to green" # Local VLM mode python src/example_edit.py --vlm-mode local --vlm-model briaai/FIBO-edit-prompt-to-JSON \ --images photo.jpg --instructions "change the car color to green" ``` ## More Examples
Relight Restyle
Retype Recolor

Advanced Usage

VLM Options

FIBO supports multiple VLM options for generating structured JSON prompts:

Option 1: Gemini API (Default)

To use Gemini as VLM backbone for FIBO, follow these instructions:

  1. Obtain a Gemini API Key
    Sign up for the Google AI Studio (Gemini) and create an API key.

  2. Set the API Key as an Environment Variable
    Store your Gemini API key in the GEMINI_API_KEY environment variable:

    export GEMINI_API_KEY=your_gemini_api_key
    

    You can add the above line to your .bashrc, .zshrc, or similar shell profile for persistence.

# API mode is the default
edit_json = get_prompt(image=image, instruction="your edit instruction")

# Or explicitly specify
edit_json = get_prompt(
    image=image,
    instruction="your edit instruction",
    vlm_mode="api",
    model="gemini/gemini-2.5-flash"
)

Option 2: Local VLM

Use the briaai/FIBO-edit-prompt-to-JSON model locally.

edit_json = get_prompt(
    image=image,
    instruction="your edit instruction",
    vlm_mode="local",
    model="briaai/FIBO-edit-prompt-to-JSON"
)

Note: Local mode does not support mask-based editing.

see the examples in the examples directory for more details.

If you have questions about this repository, feedback to share, or want to contribute directly, we welcome your issues and pull requests on GitHub. Your contributions help make FIBO better for everyone.

If you're passionate about fundamental research, we're hiring full-time employees (FTEs) and research interns. Don't wait - reach out to us at hr@bria.ai

## Citation ```bibtex @article{gutflaish2025generating, title={Generating an Image From 1,000 Words: Enhancing Text-to-Image With Structured Captions}, author={Gutflaish, Eyal and Kachlon, Eliran and Zisman, Hezi and Hacham, Tal and Sarid, Nimrod and Visheratin, Alexander and Huberman, Saar and Davidi, Gal and Bukchin, Guy and Goldberg, Kfir and others}, journal={arXiv preprint arXiv:2511.06876}, year={2025} } ```

❤️ FIBO model card and ⭐ Star FIBO on GitHub to join the movement for responsible generative AI!