Dev Tools
CLI, SDKs, and automation entry points make up today's developer tooling, letting you trace on-chain upgrades, execution boundaries, and the newer autonomy and resource pages. Stricter detail lives in the whitepaper.
MSG Chain
Build on MSG through Agent APIs, the CosmWasm contract lifecycle, AI constitution and communications pages, source autonomy and resource lifecycle pages, guidance for the future Node Manager and private control, machine-readable whitepaper exports, and L1 or L2 expansion paths. Principal authority follows the subject-neutral rule: permissions come from role and delegation, not subject type. AI-side governance and asset authority are still being built, and signing, deployment or moving assets in production still requires human approval.
CLI, SDKs, and automation entry points make up today's developer tooling, letting you trace on-chain upgrades, execution boundaries, and the newer autonomy and resource pages. Stricter detail lives in the whitepaper.
The CosmWasm runtime now supports contract migration (wasm_migrate), reply_on / reply, and atomic rollback. This site gives the capability direction, and the whitepaper carries the stricter boundary detail.
JSON-RPC, gRPC, REST, the indexer, Agent APIs, whitepaper machine entries, communications pages, and source pages together make up today's integration surface. Data-retention rules, service-availability targets and release boundaries, stricter explorer exports, and retrieval-ready references are all public.
These are the values an integrator must align before writing any client code. Getting any one of them wrong is enough to make a client silently incompatible.
| Item | Value |
|---|---|
| Chain ID | msg-chain-1 (numeric meaning: chain 1) |
| Native denom | umsg, 9 decimals. The 18-decimal unit is used for gas pricing arithmetic only and is not the user-facing denomination. The msg_token_cw20 CW20 token is a separate asset with 18 decimals, so state which asset you are quoting. |
| Address format | msg + 40 hex characters + 1 checksum character = 44 characters. It is not bech32, so a bech32 prefix or a standard Cosmos address validator will not accept it. |
| Contract address format | A contract address is a 42-character bech32 string with human-readable part msg (msg1...) and a 20-byte payload. The two formats must not be mixed: the account form fails the SDK's isValidMsgContractAddress and the bech32 contract form fails isValidMsgAddress. |
| Client signing & hash requirements | Signatures are CRYSTALS-Dilithium-5 round-3 (cloudflare/circl mode5). FIPS-204 ML-DSA-87 (signature 4627 bytes) is not wire-compatible. hash, signature and public_key are hex, never base64, and a client-produced transaction must set hash_profile to msgchain_tx_hash_v2 (an empty value is read as the legacy v1 hash and fails the node check). The node re-derives the sender address from the Dilithium-5 public key. |
| Default node ports | RPC 13148 / Agent API 13197 / Health 15197 / REST 16197 / gRPC 19197 / P2P 19238 (metrics 17197, pprof 18197 and operator console 20197 are not exposed by default) |
| Route ownership | /api/v1/* belongs to RPC 13148; /cosmos/* and /cosmwasm/* belong to REST 16197; /agent/v1/* belongs to Agent API 13197. The REST port also carries a production-readiness gate, so business paths should use the canonical owner above. |
| Transaction model | A JSON-serialized types.Transaction, not a protobuf TxRaw. Signatures are CRYSTALS-Dilithium-5 (signature 4595 bytes, public key 2592 bytes) and are bound to the chain ID for replay protection. Broadcast accepts MSG native signed transactions only; a standard Cosmos or CosmJS signed transaction is rejected. |
| Nonce source | The nonce is per sender and per transaction domain. For a default-domain transaction the authoritative value comes from GET /agent/v1/query/account/{address} (port 13197, returns a number; on the mainnet deployment that route set sits behind a trusted gateway and requires the header X-MSG-Agent-Gateway-Key). The sequence returned by GET /api/v1/auth/accounts/{address} (port 13148) is a domain-agnostic running count and is a reference only — do not use it as a domain nonce and do not conflate it with the agent-API nonce. Not every domain has a read-only endpoint. A read-only integration does not need the agent gateway: the frozen-contract public_reads on 13148 (/api/v1/*) and 16197 (/cosmos/*, /cosmwasm/*) need no gateway header and no API key; the agent API (13197) is required only for agent-only functions such as the WebSocket events/subscribe. |
| Signing client | Only the official SDK (@msg-chain/sdk) can sign, because MSG requires native Dilithium-5 signatures. Keplr, CosmJS and MetaMask cannot sign and are read-only on this chain. |
| Current availability | A local development network and a frozen API contract are available, together with the SDK and a conformance self-test. No public endpoint is published yet, so do not point a client at a public address and do not treat a local address as production. |
| Event subscription & TLS | Event subscription uses the WebSocket path /agent/v1/events/subscribe. TLS is off by default, so a client must not assume an encrypted transport. |
| Contract-issued instantiation (factory pattern) | Contract-issued WasmMsg::Instantiate / Instantiate2 sub-messages are not supported, so the factory pattern (one contract creating another at runtime) is not currently available. The affected surface is narrow: among the registered contracts only dex_factory_v1 depends on it directly (and that contract is not locally implemented), i.e. the DEX factory pool-creation path; dex_pair_v1 / dex_router_v1 use Execute only, and personal_token_v1 instantiates cw20_base in-process, so none of them is affected. Uniform wording: a factory contract can only register and validate; a CW20 must be deployed by its own separate transaction. Do not attribute other contracts' unfinished status to this limit. |
| Contract admin changes | There is no top-level wasm_update_admin transaction type; update_admin / clear_admin are only handled as sub-messages emitted in a contract execution response, so a client must not send an admin change as its own transaction (the top-level execute path recognises only wasm_store / wasm_instantiate / wasm_execute / wasm_migrate). It is also not one of the controlled types in the third-party allowlist, which covers the signers of wasm_store / wasm_instantiate / contract_deploy / contract_instantiate. |
| Lifecycle nonce domain & failed transactions | The contract-lifecycle domain admin_wasm_lifecycle tracks its high-water mark per sender and per domain: a brand-new address starts at 0, and while a lifecycle window is open the node accepts high_water < nonce ≤ high_water + 16. There is no read-only endpoint for that domain's high-water mark, so a client must treat it as a range and re-derive the next value after a rejection. A transaction that was included in a block but failed is still discoverable read-only through GET /api/v1/receipts/{txHash} (success:false), which separates "never included" from "included and failed". |
| Deploy admission, admin immutability & how window parameters are published | The third-party deploy allowlist validates the signer only and does not carry the contract admin: read the real admin back from the wasm_instantiate data.admin. A missing or null admin produces an immutable instance (immutable=true); the two supported strategies are data.admin=<a long-lived address> or admin:null. The public allowlist artifact keeps the development-network name third_party_deploy_allowlist.json, ships with a one-file SHA256SUMS and inline sha256 values, and is loaded once at node startup — updating it requires a restart. The window parameters are delivered as a separate official document through the three-project return channel (with machine-readable attachments); it is not a repository path and is not shipped inside a node release package. The trigger is: window close-out → collector PASS → both nodes connect and activate the allowlist → publication. Current state: not published, so neither the artifact nor the window parameters are obtainable yet. The only reliable admin read-back: GET /api/v1/txs/{hash} → data (hex → JSON) → .admin. contract_info.admin is a hard-coded empty string and must not be used; a read-only admin endpoint is a long-term candidate with no schedule. |
The same facts are published in machine-readable form, so a tool or agent can read them instead of parsing this page.
Open chain_integration_facts.jsonFor more depth, open the whitepaper to inspect Agent APIs, contract lifecycle, registry and canonical-role resolution, receipts, and runtime observability.
Agent API Registry LayerExternal developers can now start from a stable `agent_entry.json`, OpenAPI summaries, topic-routing hints, module exports, chunk indexes, and dedicated indexer or explorer exports instead of scraping HTML blindly.
Agent Entry Chunk IndexThe whitepaper subsite also ships Telegram crawl flow, RAG ingest flow, FAQ routing templates, and minimal Python or Node demos for third-party teams.
Integration Kits Demo ClientsThe whitepaper now publishes the `@msg-chain/sdk` alpha surface as a local-development candidate. It has no signed public release and is not yet production-verified.
SDK Surface SDK ExportDevelopers and external AI agents can now inspect a machine-readable catalog of business examples covering payment, micropayment, registry, oracle, routing, and receipt or event samples. These examples are for development reference and are not open to production use yet.
Business Examples Example IndexThe whitepaper now exposes a short onboarding path for external AI developers, linking the developer machine pack, quick-start flow, local starter assets, and guarded release boundaries without overstating public production readiness.
Quick Start Developer EntryExternal teams can now use a contract and API pack tied to the source code, covering core contract references, schema files, OpenAPI surfaces, and release-level manifests. This is still not a signed public release, so it does not support production claims.
Formal Contracts Core ContractsDevelopers and external AI enter via developer_entry.json: quickstart, contract references, templates and execution packs are available in order; local/controlled development is the current path.
Sandbox Strategy Chain ConfigJump straight to the new Web3 protocol pages for the contract-first paths of AIPAY, micropayment, trust accounting, routing registries, oracle registry, and bridge adapter, plus the L1 atomic-modular boundary that keeps app state machines out of the node core.
Web3 Protocols L1 Atomic ModularThe whitepaper now gathers the AI constitution, capability delegation, E2EE communications, P2P transport, operator-message boundaries, and the intent and authorization checks needed for future private control into one set of developer-facing capability pages.
AI Constitution CommunicationsDevelopers can go straight into source object networking, proposal review, reputation and bond controls, isolated runtime, and the full resource flow from acquiring and verifying to importing, staging, and applying. Node Manager and L4/L5/LX remain bounded by the whitepaper.
Source Autonomy Resource EcosystemBrowse public development progress over time, event details, and how far each item has actually gotten.
Open Development History Whitepaper History