AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻譯準備中
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Open-source software architecture design studio — C4 diagrams, domain models, governance, AI assistant
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Open-source architecture studio: C4 models, ADRs, fitness functions and requirements in one living model, with an AI co-architect.
Try it in the browser · Architecture Hub · Manual
Architecture diagrams go stale because they are pictures. In radical.tools they are views of one model. Every element lives once, and the canvas, dependency matrix, sequence diagram, table and wiki all read from it. The decisions, requirements and fitness functions that explain the architecture live in the same model, linked to the elements they govern.檢視完整 README ↗Open-source architecture studio: one living model of your system, for your team and your coding agents.
C4, decisions, requirements and fitness functions in one model. Free and MIT licensed, in the browser, no account.
Try it in the browser · Architecture Hub · Use cases · Blog · Guide · Reference
Open studio.radical.tools: no sign-up, nothing to install. Start from the sample model or your own; the model stays in your browser or in files you choose.
Connect your coding agent: npx @radicaltools/cli setup connects Claude Code, Claude Desktop, Codex, Cursor or VS Code to a model folder, step by step, and radical setup --status checks the connection (CLI usage). No Node.js yet? In an empty folder, curl -fsSLO https://radical.tools/radical.sh && sh radical.sh setup (or radical.cmd on Windows) downloads it first. Then ask your agent to model the repository it works in, and open the same folder in Studio (Models → Open folder…) to see the model.
Desktop app and VS Code: installers for macOS, Windows and Linux are on the latest release; to build them yourself, see Getting started. An extension that opens .radical files right in VS Code lives in apps/vscode.
Architecture diagrams go stale because they are pictures. In radical.tools they are views of one model. Every element lives once, and the structure and flow canvases, hierarchy, dependency matrix, table and wiki all read from it. The decisions, requirements and fitness functions that explain the architecture live in the same model, linked to the elements they govern.
radical check in CI says where the code and the model part ways.radical check and the Inspector point out the concerns your model has not decided yet.| Layer | Technology |
|---|---|
| Shell | Electron 29 |
| Bundler | electron-vite + Vite 5 |
| UI | React 18 + ReactFlow 11 |
| State | Zustand + Immer |
| Layout | ELK.js, webcola, custom SA pipeline |
| Language | TypeScript 5 |
Prerequisites: Node.js ≥ 20.11 (CI uses 24), npm ≥ 9
# Install dependencies
npm install
# Once after cloning: git hooks that keep architecture/.radical/base.json, the
# base Studio's "Changes on branch" compares with, after every checkout,
# commit, pull and rebase (radical hooks install)
npm run hooks
# Start in development mode (Electron, hot-reload)
npm run dev
# Type-check
npm run typecheck
# Run tests
npm test
# Production build (outputs to apps/studio/out/)
npm run build
# Run built Electron app
npm start
# Desktop installers for the current OS (outputs to apps/studio/dist/)
npm run dist
# Browser build of Studio: dev server / production build (studio.radical.tools)
npm run dev:web
npm run build:web
# Architecture Hub (hub.radical.tools): dev server / production build
npm run dev:hub
npm run build:hub
# Check this repository's own architecture model, as CI does
npm run test:reports
npm run check:architecture
radical.tools has one product version: the CLI, the MCP server, the Desktop app and the VS Code extension always carry the same one (see the ADR Product and format versioning in architecture/). Write each user-visible change under ## [Unreleased] in CHANGELOG.md as you make it; a release moves those entries under its version.
npm run release -- minor # or major, patch, or a version such as 0.3.0 or 1.0.0-rc.1
On main it switches to a branch release/v<version>, sets the version in the four package.json files and the lockfile, cuts the changelog and commits. Push the branch and open a pull request; merging it is the release decision. Then, on an up-to-date main:
npm run release:tag # tags the merge commit v<version>
git push origin v<version>
The tag releases everything at once:
@radicaltools/cli and @radicaltools/mcp, on the dist-tag next for a pre-release. It refuses a tag whose commit is not on main and skips a version npm already has, so re-running it after a failure publishes what is left.Each first checks that all four packages carry the tag's version and the changelog has its section. Since pushing a v* tag publishes, keep tag creation to maintainers (a tag ruleset in the repository settings).
Every build carries its version, commit and build day: radical --version, radical-mcp --version and Studio's About Radical Studio show them, a build that is not the tagged release as <version>+<commit>.
The repo is an npm workspaces monorepo. Run every command from the root; it forwards to the right workspace.
apps/
studio/ Radical Studio: Electron app + web SPA (studio.radical.tools)
src/main/ Electron main process (IPC handlers, file dialogs)
src/preload/ contextBridge API surface exposed to renderer
src/renderer/src/
components/ Studio's own UI (Toolbar, Matrix / Sequence / Treemap views,
Forge, document manager, modals, …)
store/ documentStore (localStorage, files, markdown folders)
persistence/ Autosave: keeps the diagram store and the active document in sync
ai/ AI chat, providers (OpenAI, Anthropic, Gemini, Ollama), Forge
platform/ host(): which host Studio runs in (see @radical/host-bridge)
hub/ Importing Hub concepts into a model
tests/ Vitest unit/integration tests
tools/ Sample model generator
build/ Desktop app icon used by electron-builder
hub/ Architecture Hub (hub.radical.tools): read-only viewer,
built on @radical/ui
vscode/ VS Code extension; bundles the Studio web build as its webview
e2e/ End-to-end regression suite (Playwright) for the web builds
of Studio and Hub, with screenshot baselines
mcp/ @radicaltools/mcp: local stdio MCP server for model folders
cli/ @radicaltools/cli: check, diff, hooks and Confluence wiki export
(metamodel, completeness, the tests it names)
web/ Marketing site, guide and reference (radical.tools)
packages/
common/ @radical/common: C4 + metamodel types, file formats, query
language, AI tool catalogue. No UI dependencies
layout/ @radical/layout: Smart Layout and the headless layout engines,
with their tests, benchmark and visual harness
ui/ @radical/ui: the canvas, panels, Wiki / Table views and the
diagram store, shared by Studio and the Hub. Documents and AI
plug in from the app (store/documentBackend,
components/wireframeGeneration)
host-bridge/ @radical/host-bridge: typed contract between Studio and its
host (Electron, VS Code webview, browser)
hub-catalogue/ @radical/hub-catalogue: the Hub's concern packs (specs in
packs/<group>/, built into catalogue/concern/ by
npm run build:packs), their validation and the Vite plugin
that serves and bundles them for the Hub and Studio
node-files/ @radical/node-files: model folders on disk for Node (MCP, CLI)
architecture/ The architecture model of radical.tools itself, checked in CI
infra/ Terraform: AWS S3 + CloudFront + Route53 + IAM (OIDC)
tools/ Repo-wide scripts (check-workspaces.mjs, test-reports.mjs, generate-icons.mjs)
docs/ Architecture notes and improvement log
# All tests (vitest)
npm test
# Watch mode
npm run test:watch
# End-to-end regression suite (Playwright) against the web builds
npm run e2e
# One JSON report per workspace, for radical check
npm run test:reports
# The fuzz files of crucible.json, through radical fuzz (night: more runs, a random seed)
npm run fuzz
npm run fuzz -- night --survey
# The guide's screenshots (apps/web/screenshots), light and dark
npm run docs:screenshots
See apps/e2e/README.md for the e2e suite, its screenshot baselines and the guide's screenshots.
Contributions are welcome: code, docs, bug reports, and new concern packs for the Hub. Start with CONTRIBUTING.md and look for issues labelled good first issue.
If radical.tools is useful to you, a ⭐ on GitHub helps others find it.
radical check reports undecided concerns (concern-unaddressed) and unbound decisions (concern-unbound); Radical Forge asks them early and binds them in its C4 stageradical check says about the model — its quality on its own (consistency, completeness, traceability, decisions), how faithfully the implementation follows it by the tests, and its check.json goals and rules as settings — with links to each element.radical file or in a folder of Markdown files (git-friendly); Structurizr DSL import