Today I'm releasing the first alpha of ForgeDesigner for macOS (Apple Silicon) and Linux (x86_64).
ForgeDesigner is a small desktop app where you describe a website in plain words and an AI assistant builds it: it creates the pages, writes the Markdown, and shows you a live preview. The result is plain files in a folder on your disk. You don't need a hosting account, you don't get locked into a page builder, and nothing lives in somebody else's cloud unless you put it there.
👉 Download: https://codeberg.org/CrowdWare/Forge4D/releases/tag/v2026.9.23-forgedesigner-linux
Why I built it
I wanted something between "hand-write HTML" and "rent a website builder". The things people use today, WordPress, website builders and IDEs, all ask you to learn their world first. I wanted a single place where I can say "make me a landing page with a short intro and a contact section", then look at the files, change a sentence by hand, and ask for the next step.
ForgeDesigner is built on Forge 4D, an open platform where apps are written in two small languages:
- SML (Simple Markup Language): declarative UI and content
- SMS (Simple Script): event handlers and logic
The whole designer UI, including the docks, the file tree, the editor and the assistant tab, is itself an SML/SMS app running on the native Forge runner (C++ on top of Godot 4.6). A few lines from its layout:
DockingContainer {
id: rightDock
dockSide: right
VBoxContainer {
id: preview
rightDock.title: @Strings.tabPreview
}
}
What works in this alpha
-
AI assistant with tools. The assistant can
list_files,read_file,write_fileandrun_commandinside your workspace folder (~/ForgeWorkspace/...). You watch it work in the transcript, and the file tree updates as files appear. - ForgeCMS plugin. The first output target: pages as SML plus Markdown, ready to be pushed to a Git repo and served as a static site.
- Live preview. Select a page or a Markdown file and see a layout preview next to the editor.
- Editor that stays in sync. Every keystroke is saved, and changes the assistant makes show up in the editor right away.
- Offline by default. Out of the box the assistant runs against a built-in mock: it's free and sends nothing anywhere. Switching to a real model is one config line (see below).
- Retries. If the model provider answers with "overloaded", the request is retried automatically; after that there's a Retry button.
Security model
An AI that can write files and run commands on your machine needs guard rails. ForgeDesigner has these:
-
Permissions are declared and confirmed. The app lists what it needs (workspace files, running programs after asking, network access to
openrouter.ai), and the runner asks you once on first start. -
Commands are argv, not shell strings. A small set (
git,ls,cat,ssh,scp) runs directly. Everything else opens a dialog where you decide, once or for good. -
API keys stay in the runner. Your key lives in a
chmod 600file in the runner's data folder and is never handed to the app or the model.
Prompt injection is still a real risk. The trusted commands can reach whatever your user can. That's a big part of why this is an alpha.
Try it
macOS (Apple Silicon): unzip, then remove the quarantine flag once. The alpha is only ad-hoc signed.
xattr -dr com.apple.quarantine ForgeDesigner.app
Linux (x86_64):
tar xzf ForgeDesigner-2026.9.23-linux-x86_64.tar.gz
./ForgeDesigner/ForgeDesigner.x86_64
Connect a real model (OpenRouter)
- Create a key on openrouter.ai (Keys → Create Key). Models ending in
:freeneed no credit. - Open the app's data folder:
- macOS:
~/Library/Application Support/Godot/app_userdata/ForgeDesigner/ - Linux:
~/.local/share/godot/app_userdata/ForgeDesigner/
- macOS:
- Put the key into
forge_ai_keys.smland runchmod 600 forge_ai_keys.sml:
Keys {
openrouter: "sk-or-v1-..."
}
- In
forge_ai.sml, switch the provider:
Ai {
provider: "openrouter"
chatModels: "qwen/qwen3.8-27b:free, nvidia/nemotron-3-super-120b-a12b:free"
}
The first model is used, and the others are fallbacks. Free models come and go, so check the current ones with tool support.
- Send your next message. No restart needed.
Known rough edges
- macOS build is Apple Silicon only and not notarized; Linux build is x86_64 only. No Windows build yet.
- ForgeCMS is the only output plugin so far.
- Free models are sometimes overloaded or change without notice.
- The UI still has a few leftovers from its origins as an SML editor.
What's next
- Deploying a site straight from the app (Git push + SSH)
- More output plugins: HTML, Android, macOS apps, and books (chapters by prompt, export to PDF/EPUB)
- Finer-grained "always allow" rules for commands like
gitandssh
The code is open source (GPLv3, with a commercial license available) on Codeberg: https://codeberg.org/CrowdWare/Forge4D
If you try it, I'd love to hear what broke, what felt wrong, and what you'd build with it. Issues and comments welcome! 🌱
Top comments (0)