Synthetix Improvement Proposals (SIPs) describe standards for the Synthetix platform, including core protocol specifications, client APIs, and contract standards.
- Review SIP-1.
- Fork the repository by clicking "Fork" in the top right.
- Add your SIP to your fork of the repository. There is a template SIP here, a template STP here and a template SR here.
- Submit a Pull Request to Synthetix's SIPs repository.
Your first PR should be a first draft of the final SIP. It must meet the formatting criteria enforced by the build (largely, correct metadata in the header). An editor will manually review the first PR for a new SIP and assign it a number before merging it. Make sure you include a discussions-to header with the URL to a new thread on research.synthetix.io where people can discuss the SIP as a whole.
If your SIP requires images, the image files should be included in a subdirectory of the assets folder for that SIP as follow: assets/sip-X (for sip X). When linking to an image in the SIP, use relative links such as ../assets/sip-X/image.png.
When you believe your SIP is mature and ready to progress past the Draft phase, you should reach out to a Spartan Council member on discord by searching members with the "Spartan Council" role or finding them within the #governance channel. The Spartan Council will schedule in a call with the SIP author to go through the SIP in more detail.
Once assessed, a SIP is moved into Feasibility and a Core Contributor is assigned. The Core Contributor will work with the author to conduct a feasibility study. Once the Author and the Core Contributor are satisfied, a SIP is moved to SC Review Pending. Once the Spartan Council has formally reviewed the SIP during the SIP presentation they can either move it to a vote or send it back to Feasibility. A vote is conducted within the spartancouncil.eth snapshot space connected on the staking dApp. If a vote by the Spartan Council reaches a super majority, the SIP is moved to Approved, otherwise it is Rejected.
Once the SIP has been implemented by either the protocol DAO or the SIP author and relevant parties, the SIP is assigned the Implemented status. There is a 500 sUSD bounty for proposing a SIP that reaches the Implemented phase.
- Draft - The initial state of a new SIP before the Spartan Council and core contributors have assessed it.
- Feasibility - a SIP that is being assessed for feasibility with an assigned Core Contributor
- SC_Review_Pending - a SIP that is awaiting a Spartan Council Review after the Author and Core Contributor are satisfied with feasibility
- Vote_Pending - a SIP that is awaiting a vote.
- Approved - a SIP that has successfully reached a super majority Spartan Council vote in favour.
- Rejected - a SIP that has failed to reach a super-majority Spartan Council vote in favour.
- Implemented - a SIP that has been released to main-net.
SIPs must pass some validation tests.
It is possible to run the SIP validator locally:
corepack enable # one-time: activates the pinned pnpm version
pnpm install # if not done already
pnpm test
This repo uses pnpm and requires Node.js 24+. npm and Yarn are intentionally blocked. As supply-chain hardening, dependencies are gated to a 7-day minimum release age and dependency install scripts are disabled (see pnpm-workspace.yaml).
vercel.json pins the build to pnpm via Corepack (ENABLE_EXPERIMENTAL_COREPACK=1) so Vercel honours the packageManager version in package.json (pnpm 11) instead of its built-in pnpm 9. If a build still fails with Detected pnpm "9.x" is not compatible with engines.pnpm, add ENABLE_EXPERIMENTAL_COREPACK=1 as a Project Environment Variable (Settings → Environment Variables) — Corepack detection does not always read the value from vercel.json. Also ensure the project's Node.js Version is set to 24.x.
All SIPs & SCCPs data is available in JSON format by status at the following urls:
https://sips.synthetix.io/api/sips/draft.json
https://sips.synthetix.io/api/sips/feasibility.json
https://sips.synthetix.io/api/sips/sc-review-pending.json
https://sips.synthetix.io/api/sips/vote-pending.json
https://sips.synthetix.io/api/sips/approved.json
https://sips.synthetix.io/api/sips/rejected.json
https://sips.synthetix.io/api/sips/implemented.json
https://sips.synthetix.io/api/sccp/draft.json
https://sips.synthetix.io/api/sccp/feasibility.json
https://sips.synthetix.io/api/sccp/sc-review-pending.json
https://sips.synthetix.io/api/sccp/vote-pending.json
https://sips.synthetix.io/api/sccp/approved.json
https://sips.synthetix.io/api/sccp/rejected.json
https://sips.synthetix.io/api/sccp/implemented.json
The SIP repository contains an "auto merge" feature to ease the workload for SIP editors. If a change is made via a PR to a draft SIP, then the authors of the SIP can Github approve the change to have it auto-merged by the sip-automerger bot.