Skip to content
🤷

Forgive us! These docs are a work in progress. Some pages may be incomplete or describe features that aren't quite finished yet. Farkitect is in early development and we don't recommend using it for real work just yet. Feel free to explore — just be aware that things are still being built.

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.

  1. Open View > FarkiBot and switch the task dropdown to Modify M1
  2. Choose the model in the Model dropdown
  3. Describe the change
  4. Press Enter
  5. Review the diff
  6. Click Replace Model, and confirm

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 diffWhat it means
Removals are shown first, in redIf 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 allThe whole model, changes marked in place.
No changesThe 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:

  1. 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.
  2. You confirm. A dialog names the model, repeats what changes, and calls out any removals. Nothing has happened at this point.
  3. A snapshot is savedLibrary 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 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.

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.

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.

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.