How to modify a model with FarkiBot
Modify M1 changes a model you already have. Describe the change in plain language, and FarkiBot rewrites the model with it applied — then shows you a diff before anything happens.
Before you start, set up FarkiBot. You need contributor access or above.
Modify a model
Section titled “Modify a model”- Open View > FarkiBot and switch the task dropdown to Modify M1
- Choose the model in the Model dropdown
- Describe the change
- Press Enter
- Review the diff
- Click Replace Model, and confirm
Write the instruction
Section titled “Write the instruction”Say what should change, in the terms you’d use with a colleague:
- “Add a Subscriptions subject area with the entities it needs”
- “Rename these entities to match the new glossary terms”
- “Split the Customer entity into Customer and Customer Contact”
- “Add a Lifecycle Status of Retiring to everything scheduled for decommission”
- “Remove the reporting subject area entirely”
Read the diff — this is the important part
Section titled “Read the diff — this is the important part”FarkiBot regenerates the entire model rather than editing it in place. That’s what makes the change atomic and undoable, but it also means the model has to faithfully reproduce everything you didn’t ask about.
The diff is how you check that it did.
| In the diff | What it means |
|---|---|
| Removals are shown first, in red | If you asked only for additions and see a removal, that’s the model having dropped something. Discard and try again, or use a stronger LLM. |
| Changes only (the default view) | Just what differs, with enough surrounding structure to place it. |
| Show all | The whole model, changes marked in place. |
| No changes | The model did nothing. Try a more specific instruction. |
A rename appears as a removal plus an addition, because the diff matches on names — that’s expected, and it’s why removals are worth reading rather than scanning.
The three gates before anything is replaced
Section titled “The three gates before anything is replaced”Clicking Replace Model does not replace the model. It starts a sequence, and any step can stop it:
- FarkiBot checks the model hasn’t changed since it generated the rewrite. If a teammate edited it in the meantime, nothing is replaced — otherwise their work would vanish silently. Run the change again over the current model.
- You confirm. A dialog names the model, repeats what changes, and calls out any removals. Nothing has happened at this point.
- A snapshot is saved —
Library Model (before FarkiBot modify 2026-08-01 1432).farki. This is your undo: import it back to restore the previous version.
Only then is the model replaced.
If the snapshot doesn’t get saved
Section titled “If the snapshot doesn’t get saved”If you cancel the save dialog, or it fails, FarkiBot stops and tells you nothing has been replaced. You then choose:
- Try saving again
- Replace without a snapshot — which cannot then be undone
- Abandon the change
It will not quietly continue. This matters because a browser’s file-save API is allowed to report success it can’t actually guarantee.
One browser caveat worth knowing: in Chrome and Edge, FarkiBot can tell whether the snapshot was really written. In Firefox and Safari the browser gives no such signal, so a download that started is all it can see — check your downloads folder before relying on it.
Metamodels can’t be modified this way
Section titled “Metamodels can’t be modified this way”The Model dropdown lists M1 models only. M2 metamodels are deliberately absent.
Replacing a metamodel would orphan every model instance built on it — and neither the diff nor the snapshot would show you that happening, because the damage lands in other packages. Edit metamodels directly instead: see How to create an element type and How to use the M2 lifecycle.
Very large models may not fit
Section titled “Very large models may not fit”The whole model has to come back from the LLM in one response. If it can’t, FarkiBot says so and changes nothing rather than applying a partial rewrite.
If you hit this, split the work: modify a smaller package, or make the change by hand.
Choosing a model for this task
Section titled “Choosing a model for this task”A change rewrites the entire model, which makes Modify M1 the most demanding thing FarkiBot does — more demanding than generating the same model from scratch, because preservation is now part of the job. Starred models handle it best; a weak model may drop content it was asked to keep.
The diff will show you if that happened, which is exactly why the diff exists. See How to choose an LLM.
Related
Section titled “Related”- How to generate a model
- How to choose an LLM
- How FarkiBot Works
- How to import a .farki package — restoring from a snapshot