AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
C4 모델·ADR·피트니스 함수·요구사항을 다루는 오픈소스 스튜디오이며, AI 공동 설계자를 제공하고 브라우저에서 무료로 사용한다
Open-source studio for C4 models, ADRs, fitness functions and requirements, with an AI co-architect. Free, in the browser.
개발 도구TypeScript · JavaScriptGitHub @radicaltools온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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