Convex Name System (CNS)
SkillDev toolsResolve or register Convex Name System (CNS) names. Use when the user wants to look up a CNS name, register a new name, or update a name's target.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Convex Name System (CNS) skill
What this skill tells your AI
The instructions your AI receives, as published by convex-dev/convex in .agents/skills/cns/SKILL.md and read by ahel’s review.
CNS maps human-readable names (like convex.fungible) to on-chain addresses.
See the convex-lisp skill for CVM conventions.
Resolve a Name
In CVM source, @convex.fungible resolves the name directly — this is the
normal way to reach a library.
To inspect a name's record (value, controller, metadata, child node), use a
Convex MCP server's resolveCNS tool if one is configured. Otherwise query it:
java -jar convex.jar client query '@convex.fungible'
Register or Update a Name
The registry actor is #9, available in CVM code as *registry*. It has no
cns-update function — use create for a new name and update for an
existing one:
;; Create a new name pointing at a target, with *address* as controller
(*registry*/create 'my.name #TARGET *address*)
;; Update an existing name you control
(*registry*/update 'my.name #NEW-TARGET)
;; Change who controls a name
(*registry*/control 'my.name #NEW-CONTROLLER)
These are transactions (they change state). Notes:
- Creating requires controlling the parent namespace.
(*registry*/create 'my.name ...)needs themynode to exist and to trust you — otherwise it fails with:TRUST"Forbidden to create CNS node". Top-level names require special authority. createalso accepts optional controller, metadata and child arguments:(*registry*/create 'my.name target controller metadata).- Note
(*registry*/register {:name "..."})is unrelated — it registers metadata for the caller's own account, not a CNS name. - The registry also defines
change-control, but it is the scoped:callableSPI variant (path taken from*scope*) — not called directly with a symbol; usecontrol.
CNS in Code
@convex.fungiblein CVM source resolves to the actor address at runtime- Use CNS paths instead of hardcoded addresses for portable code
(@convex.fungible/balance #TOKEN #USER)callsbalanceon the resolved actor
Common CNS Names
| Name | Purpose |
|---|---|
convex.fungible | Fungible token standard library |
convex.trust | Trust and access control |
convex.asset | Generic asset interface |
asset.nft.simple | Non-fungible token standard |
asset.multi-token | Multi-token standard |
(Resolve with (*registry*/resolve 'name) to get the current address — these
are network-specific.)
Signals
- GitHub stars
- 117
- Forks
- 47
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
cns- Source
- github.com/convex-dev/convex