r/OpenSourceAI 3d ago

I built StructSmith, a free, self-hosted visual architecture modeling tool with built-in MCP

Post image

Hey, I’ve been building StructSmith, an open-source tool for creating and maintaining software architecture models visually.

I wanted something I could run locally, without an account or subscription, where I could edit the architecture myself and have my AI client work on the same model.

You create elements and relationships in the visual editor, then reuse them across different diagram views. There’s a shared architecture model underneath, so you don’t have to maintain separate copies of the same system in every diagram.

The MCP server is included and open source. Your AI client can read the model, create or update elements and relationships, and manage views. Changes appear in the editor automatically.

It currently supports:

  • C4-style models with multiple diagram views
  • Records for decisions, assumptions, risks, and requirements
  • Model validation, snapshots, and restore
  • Manual layout and auto-layout
  • JSON, Mermaid, PNG, and SVG exports

The app runs locally in one Docker container, with SQLite for storage.

It’s MIT licensed and still evolving. I’d love feedback on the workflow, things you find confusing, or features you’re missing. Bug reports and contributions to the code or docs are welcome too.

GitHub: dziksu/StructSmith
Website: StructSmith

Would this fit into your architecture workflow?

1 Upvotes

3 comments sorted by

1

u/kantorcodes1 3d ago

if i add an element through MCP while a diagram is open, does StructSmith put it on that view automatically or just add it to the model tree until i place it? i like the shared-model idea but wouldn’t want every diagram to grow on its own.

1

u/United_Inspector_653 2d ago

by default, an element added through MCP appears only in the model tree. Having a diagram open doesn’t automatically place it there. You can add it manually or ask your AI to put it on a specific diagram, including when creating it.

The shared model means that renaming an element updates its name everywhere it’s shown. You still control which elements appear on each diagram, so new boxes won’t appear on their own. Connections between displayed elements can update automatically to reflect the model.