Architecture you can compile

Most architecture lives in documents and diagrams. It describes the system, but it does not build the system, so it drifts the moment someone changes code without updating the picture. Vishwakarma closes that gap by making the architecture the thing you compile.

A model is a set of .vishwakarma files. Running the compiler over them does two jobs.

It checks the design

The compiler validates the whole description before it emits anything. A command that guards on a field that does not exist, a relationship pointing at an unknown entity, a flow step that never terminates — each is a build error, caught at compile time, the same way a type checker rejects a program that adds a number to a string.

This is what "architecture you can compile" means literally: the design has rules, and violating a rule stops the build. You cannot ship a system whose architecture does not hold together, because the architecture is checked as a precondition of generating the system.

It emits the running system

Once the design validates, the compiler generates every layer beneath it from the same description:

flowchart LR
  entity["entity"] --> entityOut["database schema · migrations · row-level isolation"]
  command["command"] --> commandOut["validated write endpoints · authorization guards"]
  query["query"] --> queryOut["paginated, filterable read endpoints"]
  use_case["use_case"] --> useCaseOut["multi-step flows run as state machines"]
  event["event"] --> eventOut["published facts + the reactions to them"]
  routes["routes"] --> routesOut["the HTTP surface + its auth posture"]

You do not hand-write the SQL, the wire types, the request validators, or the client hooks. They are derived. When you change an entity's fields, the schema, the API, the validation, and the typed client all move together in the next build, because there is only one place the truth is written.

Why drift becomes impossible

The generated code is not a starting point you then edit. It is output. Editing it by hand would be overwritten by the next build, so you never do — you change the description and re-generate. With a single source of truth and everything else derived from it, there is no second copy of the design to fall out of sync. The diagram and the deployment are the same artifact.