Modulify

Site chat

The one continuous conversation that builds and edits your site, and what happens while it runs.

On this page

Chat is how you build in Modulify. It lives in the panel down the left of the editor, beside the live preview, and every change you make by describing it starts there.

One conversation per project

There is one chat per project and it never resets. There is no new chat button, no session list and no way to open a second thread beside the first.

The transcript belongs to the site rather than to you. Everyone who can reach the workspace that owns the project reads the same messages, each one carrying the name and avatar of whoever sent it, and a run a teammate starts streams into your panel too.

That continuity is the point. Context you gave three messages ago is still in play, so "make that section wider" is a complete request with nothing to re-describe.

The panel

The panel opens on the most recent 10 messages and pulls older ones in as you scroll up. When there is nothing left to load, the top reads Start of conversation. A project nobody has written in yet reads No messages, under it Send a message to start this session.

The strip directly above the chat box reports what is happening rather than carrying a running balance. It holds the working indicator while a message generates, and it shows your credit count only once the balance reaches zero, reading 0 credits next to an Upgrade now or Add credits button. Click the count to open the plan and credits modal. See Credits.

Collapsing the panel, and where it goes on a phone, are covered in Tabs and visibility.

Send a message

The box reads Describe what you want to build or change.... Enter sends and Shift + Enter starts a new line.

Along the bottom of the box, left to right:

  • + opens the attach menu: Manage connectors, Manage skills, Attach file, Take a screenshot, Pick a file and Pick an attachment.
  • The mode picker, Build or Plan. See Plan and Build modes.
  • How each message is sized. See How work is sized.
  • A microphone. It records up to 2 minutes behind a level meter and a timer, then transcribes into the box at your cursor. Under a second is refused with Recording too short. The first recording asks for your browser's microphone permission, and while that permission is blocked nothing records at all: you get a Microphone blocked warning telling you to enable it in your browser site settings and try again. Transcription only fills the box. It never sends, so you read the text and fix it yourself before pressing send.
  • The send button.

The whole toolbar goes inactive while the preview is still syncing and while a version is being restored, so nothing is sent into a project that is mid change.

For what a message can carry beyond text, see Attachments and context, Skills and Connectors. For how to phrase the request itself, see Writing prompts.

What a running message looks like

An animated indicator sits in the strip above the chat box for as long as the run lasts, with a line that rotates as it works, Working on it..., Fine-tuning..., Polishing the details.... Once the model starts producing output, whether that is text, reasoning or a tool call, a live timer counts up beside it. Two phases name themselves instead: Requesting... and Compacting context.... Your credit count gives up that spot until the run finishes.

Then the reply builds itself in place.

Thinking

A Thinking... row appears while the model reasons, and settles into Thought for 12s when it stops. Click it to read the reasoning in full.

Actions

Each thing Modulify does shows as a row naming the action and, for file work, the file. Several actions running together collapse into a single row that names the one currently running with a 3/7 counter beside it, and reads Did 7 actions once the batch finishes. A row says what it is doing while it runs, such as Creating cron, and what it did once it finishes, such as Created cron. A failed action turns that row's icon red and reads Couldn't create cron instead, and a stopped one reads the same way. When only part of an action went through, the row says so, such as Made files private, 2 failed or Updated 2 of 3 secrets.

Click any row to open the activity view, which lists everything the message did, with a Back button and an N actions count in its header.

Task list

Work with more than a couple of steps gets a checklist panel headed 3/5 tasks, striking each step through as it completes. It adds · all done and folds itself away when the last one lands.

The message menu

Every message in the transcript carries its own three dots menu, the assistant's replies and the ones people send alike. It sits under the message and stays hidden until you hover, so the panel reads clean, and it is always visible on a touch screen. On an assistant reply it waits until the reply has finished, so a message still generating has no menu.

  • Copy message is on every menu.
  • Download assets is there only on a message that actually carried attachments or screenshots. A single file saves on its own and several are packaged into one zip.
  • Reattach to input is there only on a message a person sent, yours or a teammate's, under a separator. It loads that message back into the chat box as it was sent, chips and all, replacing whatever the box was holding.
  • Info is there only on a finished assistant reply, and opens a submenu where Duration and Credits record what that turn took and what it charged. See How work is sized.

What Copy message copies

Copy takes the message with the context it carried, not only the wording that was typed. The elements you pinned in the preview and the files you attached come with it, so pasting into a Modulify chat box rebuilds them as chips in the same places, and pasting anywhere else gives plain text with a marker such as [Image #1] sitting where each chip was. The toast says so: The text and its attached context are on your clipboard. See Attachments and context for what a chip and a marker are.

Two things stay behind. An error or console line you pinned comes across only when you sent it on its own with nothing typed beside it, so a message where you also wrote a sentence copies the sentence. And on an assistant reply it is the reply text you get: the thinking and the action rows are separate from the message and are not copied.

If your browser refuses clipboard access, nothing is copied and the toast reads Could not copy.

Suggestions after a run

When a run finishes, a Suggestions row can appear above the chat box: a lightbulb, the word Suggestions, then a few short chips proposing something worth doing next on this site.

Clicking a chip writes that request into the chat box and puts the cursor there. Nothing is sent and no credits are spent until you press send yourself, so you are free to edit the wording first or clear it. When the chips run wider than the panel you can drag the row sideways, or scroll it with a trackpad or wheel.

Each chip is checked against your own project before it is offered, so it never proposes something unavailable, already done, or something the AI is not allowed to do for you, and a chip that depends on a connector is offered only to the person whose account is connected. The check runs again every time the panel loads, so a chip you have since acted on is gone when you come back.

The row is occasional rather than constant. It stays hidden when nothing applies, when the workspace is out of credits, while a run is going, while a message is waiting in the message queue, while a question is waiting on your answer, while a version is being restored, while the preview is still syncing, and after a run that failed or was stopped. It also clears the moment you send your next message.

Stop a run

A Stop button appears next to the send button while a run is active, taking the microphone's place.

Stopping ends the job for everyone in the project, marks any action still running as stopped, clears the task list and drops a Generation stopped divider into the transcript.

It does not roll anything back. Files already written stay written, and they are saved to Backups as a Preview sync entry once the preview confirms the run stopped, or the next time the editor opens. To get back to an earlier state, restore a snapshot from Backups.

When it asks you something

A run can pause and put a question to you rather than guess. The question appears in a panel with its options lettered a., b., c., and clicking one answers it and lets the run continue.

You can ignore the options and type your own answer in the chat box instead. Sending it resolves the question rather than starting a new run. Anything sitting in the message queue waits until you answer.

Markers in the transcript

Thin dividers mark things that happened to the conversation rather than to the site. Several carry an info icon with the full explanation.

Marker What it means
Context compacted The conversation grew too long, so everything above it was summarized into a shorter context
New session started The assistant stops carrying the messages above and continues fresh from there, which keeps generations fast
Generation stopped Somebody pressed Stop
Switched to Plan mode, Switched to Build mode The mode changed partway through
Approval requested A plan was presented and is waiting

Neither compaction nor a new session touches your chat history. Every message stays where it was and stays readable. What changes is how much of it the assistant still carries forward, so detail from far back is worth restating.

When a run fails

A failed run replaces its reply with a red block titled Generation failed!, the reason underneath and Error code: with a code like SC-3001. A retry arrow sits in the corner of that block. Retry deletes that reply and runs the same request again.

It does not roll anything back either. Files a failed run already wrote stay written, and they are saved to Backups as a Preview sync entry once the preview confirms the run ended, or the next time the editor opens.

That arrow is rarer than it looks. It is only ever on the most recent reply, and only when that reply is one that errored or was stopped. A reply that finished normally never carries one, an older failure loses its arrow as soon as a newer reply lands below it, and no arrow shows while a run is going.

One outcome comes back amber rather than red, because it is not really a failure. Generation interrupted reads This generation stopped before it finished. Retry to run it again.

A turn that ran but stopped part way through keeps its reply and adds an amber Generation stopped early notice below it, with the reason and a code. Whatever it already changed was kept, so this is not a failed run and it is billed like any other.

One of the reasons handles itself. A reply cut off at the assistant's output ceiling picks itself back up where it stopped and carries on, up to twice, inside the same run. That is one reply and one charge covering the whole thing rather than a second run, and the notice only appears if the turn is still unfinished after that.

A Continue button on that notice picks the work up where it stopped, as a new run. It only appears on the most recent reply, and it is disabled while another run is going. If you have queued messages, the queue waits rather than stepping over the unfinished work.

With no credits left the message is not sent at all, and reads You are out of AI credits, so this message was not sent. That block carries no retry arrow, because nothing ran and there is nothing to run again. What to do about it sits in the strip above the chat box instead, already reading 0 credits next to Upgrade now or Add credits. See Credits.

A run that empties the balance while it is still going is stopped there and then rather than allowed to finish past zero. Its reply is kept, with an amber Out of AI credits notice under it reading No AI credits remaining. Top up to continue. and Code: SC-6001. That notice carries no retry arrow either, because a retry would have nothing to spend, and you are charged only what the balance could cover.

What chat can and cannot change

Beyond writing your site's files, chat reaches most of the editor. It can run SQL and create a database, read and write storage, set and delete secrets, create, edit and run crons, generate and edit images, call your connectors, query the site's analytics, add and remove languages, publish, rename the project, change its description, change its free subdomain, and read or change the site's AI media preferences when you ask it to.

It can also list your storage and database backups, take a manual one, delete one or all of them after asking you first, and turn daily backups on or off for the site, though the database switch is refused on a site on the older database, which has no daily backup to stop. It never downloads a backup or hands you a link to one, and it cannot restore one, because storage and database backups have no restore. See Backups from chat and MCP.

Storage from chat

Chat covers most of the Storage panel and leaves a few pieces of it to you. It can put a file it has in the workspace into storage, for example an image it just generated or a file it downloaded for you, and hand back the link when that file is public; list and search what is stored; look up the link of a file that is already there; report how much is stored and how much of it is public or private; create folders; move files and folders; rename one file at a time by moving it to a new name; delete files and folders; and make files and folders public or private. Before it moves, renames, deletes or changes the visibility of anything you did not just hand it in that same message, it asks you first and names exactly what it is about to touch. Folders keep their names: it cannot rename one, only move it. Chat cannot:

  • Clear storage. That is the Clear storage button under Danger zone in the Storage tab's Configuration sub-tab.
  • Change the top level default. Open the Top level: Public or Top level: Private menu on the right of the breadcrumb row in the Storage sub-tab and pick New files here are public or New files here are private.
  • Show or rotate the storage key. Both sit under Connection in the Configuration sub-tab. Chat never reads the key and never prints it.
  • Export storage. That is Export .zip under Export in the same sub-tab, and chat refuses to zip or bundle your files in its place.
  • Read a private file. It has no tool that returns a stored file's contents, and a private file has no link it could fetch, so it writes the site code that reads private files through the storage helper rather than reading them itself.

On a project's first build, chat names the project and gives it a matching free subdomain, for example lisbon-pottery-studio for a site it named Lisbon Pottery Studio. When that exact name is already taken it adds a short suffix such as -k13 instead of failing. The address in your browser follows the change on its own, and you can ask chat to change the free subdomain later in plain words. See Your web address.

Three things are deliberately out of its reach, and asking gets you told to do them yourself.

  • Visibility and sharing. Chat refuses with visibility and sharing cannot be changed from chat and points you at the site settings.
  • Domains, plans, credits and workspace members. It cannot connect or remove a domain, move you to another plan, buy credits, or add and remove members. Two of those it can still read out to you, below.
  • Deleting the project, restoring a code backup, and downloading a storage or database backup. All three stay manual.

What it can report

Some of what chat cannot touch it can still look up and tell you in plain words when you ask for it:

  • Your live web address. The free .modulify.website one, plus any custom domain that is connected and its www version. It says at the same time whether a custom domain is available on this site's plan and whether the "Made with Modulify" badge can be hidden, and sends you to the settings to do either. Before a first publish it says the addresses will not resolve yet. See Your web address, Custom domains and Settings.
  • The in-editor preview link. That address loads only inside the Modulify preview panel. It is not public and will not open in a normal browser tab. See Preview.
  • Whether a publish is running. Including the case where the site cannot publish because it is over the plan's site limit.
  • How the last publish went. Whether it succeeded, when it started and finished, and who published it. See Publish history.

It reads these only because your message asked. Chat does not check them to verify its own work, does not open or fetch your site with them, and never polls them in the background, so none of it happens quietly during a build.

Delete the transcript

There are two ways in, and they do the same thing.

The quick one is the broom button in the top left of the editor, next to the button that shows and hides the chat panel. Its tooltip reads Delete chat.

The other is the Settings tab under Danger zone, where the Delete chat row holds the same button.

Both are disabled while a generation is running (Wait for the current generation to finish.) and when there is nothing to delete (You have no chat to delete.), and both open the same confirmation.

The confirmation reads Delete this chat? and warns that it permanently deletes the transcript for everyone in the project and throws away whatever the team had queued. Your project, its pages and its content stay exactly as they are. It cannot be undone.

Next