Constellation as Code
This is a developer track. If you’re operating a Safe through the Zodiac app, start with Getting Started instead — it walks you through importing a vault, creating a policy, and executing a transaction in the UI, no code required.
This tutorial takes you from an empty directory to a deployed Zodiac constellation — an organisation’s smart account graph, declared as code and shipped onchain through Zodiac’s review-and-sign flow. It’s for teams who want to manage their accounts, roles, and permissions as version-controlled code rather than through the app.
By the end you will have:
- A TypeScript project, scaffolded from the Zodiac Constellation Template , authorized against your Zodiac workspace.
- A Safe declared in code, with a Roles module attached.
- A scoped operator role that can only call the contracts and functions you allow.
- Those changes diffed against the chain, reviewed, and signed — all from your browser.
What’s a constellation?
A constellation is a declarative description of an organisation’s smart account graph: which Safes you operate, what roles each one delegates, who’s allowed to do what, and how the pieces are wired together.
You write the desired state in TypeScript. Zodiac computes the diff against what’s currently onchain, plans the most efficient set of transactions, and gives you a UI to review and sign them. Anyone with workspace access sees the same plan and the same audit trail.
You manage your account graph the way you manage infrastructure: declare it as code, version it in git, review it in a PR, and ship it like software.
What you’ll need
- Bun — the template runs on the Bun runtime.
- A browser wallet (e.g. a Safe signer) to authorize the workspace and sign the final transactions.
- A Zodiac account. If you don’t have one yet, the first
bun pullwalks you through sign-up.
When you’re ready, continue to Set up the project →.