Select a file to view its exact on-chain source. Sorted README → gnomod → sources → tests.
Accept(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, pkgPath string)
Append(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, slug string, body string)
Authority() string
Delete(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, slug string)
Each(fn func(string, gno.land/r/g1lnkytfqcjwllws63gvf0mv9yt04aswy4y9amhm/home.Slot) bool)
Fallback(path string) string
Forget(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string})
Freeze(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string})
Frozen() bool
Get(slug string) string
Has(slug string) bool
HistoryPaths() []string
LastHeight() int64
Layout() string
Link(sub string) string
LivePath() string
Lookup(slug string) (struct{Body string; Rev int; Height int64}, bool)
Manifest() string
NewFiller() *gno.land/r/g1lnkytfqcjwllws63gvf0mv9yt04aswy4y9amhm/home.Filler
Path() string
PendingPaths() []string
Register(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, t interface {Render func(string) string})
Render(path string) string
Revision() int
Rollback(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string})
Set(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, slug string, body string)
Slugs() []string
Style(key string, fallback string) string
TransferAuthority(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, to string)
Withdraw(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, pkgPath string)
Signatures reconstructed verbatim from vm/qfuncs — interface params keep their inline definitions.

<gno-columns>

<gno-columns-sep />
Hey, I'm Alex 👋 **Clockwork** on most of the internet.
Lead Frontend Engineer at [All in Bits](https://github.com/allinbits), the company behind Cosmos, Tendermint and Gno. I build the TypeScript layer that connects developers and users to blockchain infrastructure: client libraries, code generators, wallets, governance dApps, indexers and IBC relayers.
Athens, mostly. Everywhere, occasionally. LEGO builder. Curious dad.
[GitHub](https://github.com/clockworkgr) · [X](https://x.com/subbyjr) · [LinkedIn](https://www.linkedin.com/in/amegalokonomos/)
</gno-columns>
## Now
- [`gno-js-client`](https://github.com/gnolang/gno-js-client) and [`tm2-js-client`](https://github.com/gnolang/tm2-js-client): the official JS/TS clients for Gno and Tendermint 2
- ['tm2-rpc'](https://github.com/gnolang/tm2-rpc) a Tendermint 2 RPC client
- ['gno-types'](https://github.com/gnolang/gno-types) Gno types and encoding/decoding library
- ['atomone-types'](https://github.com/atomone-hub/atomone-types) AtomOne types and encoding/decoding library
- [IBC v2 TypeScript relayer](https://github.com/allinbits/ibc-v2-ts-relayer): a cross-chain IBC v1 and v2 relayer with Gno support.
- [Eclesia indexer](https://github.com/allinbits/eclesia-indexer): a high-performance, modular blockchain indexer.
- AtomOne and GovGen governance dApps, staking portal, bridging portal.
- Contributing to [`gnolang/gno`](https://github.com/gnolang/gno) core.
- [Upgradeable realms for gno.land](https://github.com/clockworkgr/gno-upgradeable): the path is permanent, everything behind it can change. This page runs on it.
- [GNOracle](https://github.com/clockworkgr/gnoracle) A decentralized Oracle realm/framework for Gno
## Previously
- The TypeScript client codegen system for [Ignite CLI](https://github.com/ignite/cli), 1,350+ stars.
- [Emeris](https://github.com/EmerisHQ): a cross-chain DeFi aggregator, leading a team of ten.
- [Castor Wallet](https://github.com/allinbits/multiwallet): a multi-chain Cosmos wallet, unreleased.
- [Beet](https://github.com/beetapp): a BitShares key and identity manager.
...and many other examples and helper projects.
## Stack
`TypeScript` · `Vue 3` · `Go` · `Rust` · `Cosmos SDK` · `CometBFT` · `IBC` · `Gno` · `Protobuf` · `GraphQL`
## Before the rabbit hole
Before the blockchain rabbit-hole I spent over 15 years in digital advertising, ending as Head of Digital with a shelf of Ermis Awards.
Fell down the rabbit-hole in 2016 and never looked back.
## Numbers
| | |
| --- | ---: |
| Merged pull requests across public repos | 763 |
| Of which at All in Bits · Ignite · gno.land | 231 · 127 · 69 |
| Commits in the last twelve months | 1,096 |
| On GitHub since | March 2014 |
_Counted from GitHub in September 2026._

> [!NOTE]- About this page
> This page is a gno.land realm. Its text lives in on-chain slots, the layout is a slot too, and the look is a separate theme realm that can be swapped through [p/g1lnkytfqcjwllws63gvf0mv9yt04aswy4y9amhm/upgradeable](https://github.com/clockworkgr/gno-upgradeable) without touching the data. Changing a paragraph, the layout or a color is one transaction. Changing how the page is drawn is a deploy plus an Accept, with rollback. [See what is live](/r/g1lnkytfqcjwllws63gvf0mv9yt04aswy4y9amhm/home:system), or [read the slots](/r/g1lnkytfqcjwllws63gvf0mv9yt04aswy4y9amhm/home:slots).
`gno.land/r/g1lnkytfqcjwllws63gvf0mv9yt04aswy4y9amhm/home` · rev 24 · block 1404306 · gnoland-1 · theme `gno.land/r/g1lnkytfqcjwllws63gvf0mv9yt04aswy4y9amhm/home/theme/v0` · [slots](/r/g1lnkytfqcjwllws63gvf0mv9yt04aswy4y9amhm/home:slots) · [edit](/r/g1lnkytfqcjwllws63gvf0mv9yt04aswy4y9amhm/home:edit) · [system](/r/g1lnkytfqcjwllws63gvf0mv9yt04aswy4y9amhm/home:system)vm/qrender output, sanitized (docs/render-security.md) and displayed in an empty-sandbox iframe — scripts, forms and popups cannot run. Links stay inert in-preview; right-click to open.