What is Callcium
Programmable policy engine for ABI-encoded data.
ABI-encoded calldata is opaque at the contract boundary. Contracts that delegate, proxy, or relay calls have no standard way to constrain what those calls contain. Existing checks are hand-rolled in each contract, with no shared wire format that offchain tooling can evaluate.
Callcium encodes constraints on function arguments into a compact binary policy. The same policy is enforced onchain by Solidity contracts or offchain by the TypeScript SDK — one binary, two evaluators. Selectorless policies extend the same format to any ABI-encoded data.
How it works
A policy targets a function signature. Each constraint targets an argument by position and applies an operator — equality, range, set membership, bitmask, and more. Constraints within a group AND together. Multiple groups OR together, allowing flexible permission models.
Constraints can also target transaction context — caller address, call value, block timestamp, and more — without touching the function signature.
Pick an environment
Solidity
Build, validate, store, and enforce policies onchain. Foundry-first workflow.
TypeScript SDK
Build, validate, and enforce policies offchain. TypeScript-first workflow.
The wire format is identical across environments — a policy built offchain enforces the same way as one built in Solidity. See the Specifications for the normative binary format.