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”
Use web research
Section titled “Use web research”Turn on Web research below the instruction when the change needs facts from outside the model, for example “add the regulators that apply to these services”.
| Off by default | A notice sits above the instruction while it is on, and the button reads Modify with web research. |
| It serves the change you asked for | Nothing already in the model is altered because of something found on the web, unless your instruction asked for that. |
| Web content is marked | Each element taken from the web says so in its notes, with a link to the source. The package notes record that web research was used. |
| Unconfirmed content is marked too | If you asked for something the search could not confirm, it is included with notes that begin “Not verified by web research.”, and it carries no link. |
| It searches once per run | Only the first attempt searches. If FarkiBot has to correct the file, it does not search again. |
The diff shows every element that changed, as usual. Open an added element’s notes to see its source.
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, or bring in a new version with Upgrade a metamodel, which keeps every model element and its type. See also How to create an element type and How to use the M2 lifecycle.
View links across packages are not kept
Section titled “View links across packages are not kept”FarkiBot rewrites one model package and replaces it. View links inside that package survive when the LLM reproduces them, and the diff shows any it dropped. Links between that package and views outside it are lost by the replace, in both directions:
- a link on one of this model’s diagrams to a view in another package
- a link on a diagram elsewhere to a diagram, catalog or board in this model
Recreate those afterwards by dragging the views back onto the diagrams. The snapshot taken before the replace still holds the links inside the package.
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