It starts where designers already are.
A plan card in Figma, built from variables. Nothing special about it, which is the point: nobody changes how they design.
Every value is a decision with a name.
Basemode reads the variables behind each layer, resolves every alias per mode, and tracks each one by Figma's id, so a rename is never mistaken for a deletion.
Written for every platform you ship.
The same decisions become CSS, Tailwind, TypeScript, Swift, Android and four more formats, with semantic tokens kept as references so themes just work.
It arrives as one pull request.
New values, renamed tokens already rewritten where your code uses them, and anything removed but still in use called out first. Developers review it and move on.
Held to spec, even by agents.
A coding agent builds a new variant and hard-codes a color. check_code catches it before the agent finishes, and it fixes its own work.
The same everywhere it lives.
Web, iOS and the docs your contractors read all follow the same decisions. Change action/primary once and every one of them changes with it.
PRO
$24/ seat / month
--color-action-primary: var(--color-blue-600); --radius-sm: 6px; --space-6: 24px;
static let colorActionPrimary = Color(red: 0.1451, green: 0.3882, blue: 0.9216, opacity: 1)
<color name="color_action_primary">#FF2563EB</color> <dimen name="radius_sm">6dp</dimen>
PRO · ANNUAL
$240
Two months freeNow look inside
Adoption is measured on every sync: the share of styling that comes from the system.
Light, dark and any other mode, side by side, exactly as Figma resolves them.
Usage counts show which tokens are load-bearing before anyone renames one.
One engine
The hosted product, the Action, the CLI and the MCP server share one engine, so a check that passes for an agent passes in CI, and a token generated by hand matches the pull request byte for byte.
No code changes. Runs on a schedule or by hand, and opens or updates the one pull request.
1on:2 schedule: [{ cron: "0 22 * * 0-4" }]3 workflow_dispatch:4permissions: { contents: write, pull-requests: write }5jobs:6 tokens:7 runs-on: ubuntu-latest8 steps:9 - uses: actions/checkout@v410 - uses: arcarolabs/basemode-action@v111 with:12 basemode-key: ${{ secrets.BASEMODE_KEY }}13 formats: tailwind4,typescript14 path: src/tokensTry it with sample tokens in a couple of minutes, then connect Figma, GitHub and your agents when you're ready. No card needed.