[public review] Draft conventions for building applications on top of Nano

[public review] Draft conventions for building applications on top of Nano

I’ve been working on an effort to document open, practical conventions for building applications on top of Nano - covering what I think are "missing puzzle pieces" within the community, notes on payment integration, formalization of technical decisions made along the way,

and I’m now opening the current drafts for public technical review:

The OpenRai Initiative Standards (ORIS) repository

Of the set of drafts so far, I personally think are most broadly useful are:

ORIS-007 - Nano Application-Level Metadata, Correlation, and Signaling Patterns

ORIS-008 - Reliable Nano Payment Integration

ORIS-001 - Nano Off-chain Message Signing (NOMS)

ORIS-006 - Nano CAIP Identifiers

The repository also includes more specialized payment-interface and NanoNyms formalities...

DISCLAIMER: These documents do not claim authority, and they do not become normative merely by being written down. They are open proposals for discussion and review, not official Nano protocol specifications.

Even at this stage, formalizing these conventions has proved valuable in agentic AI development and design. It gives humans and agents a precise shared reference, exposes ambiguities early, and makes implementation decisions easier to review.

I am particularly interested in feedback from other people who maintain wallets, SDKs, payment services, RPC providers, or other Nano applications:

  • Do they describe existing Nano behavior correctly?
  • Are important edge cases missing?
  • Where might two competent implementers interpret the text differently?
  • Do you have some nagging itch you think ought to be considered for inclusion?

Keep buidling!@

u/cbrunnkvist — 3 days ago

Announcing Nano Snapshot Swarm beta: community-run BitTorrent ledger snapshots

https://nano-snapshots.openrai.org

Background

The goal is to evaluate an independently operated BitTorrent distribution path for (reasonably-) up-to-date Nano ledger snapshots.

The project continuously publishes a signed pointer to the current snapshot and provides a shrink-wrapped mirror client. Run it once for a single download, or leave it online to automatically discover updates, download the missing deltas, and contribute back by seeding the latest snapshot for other users.

How it works (three components)

  • Publisher: An single automated publisher distributes a signed Mainline DHT BitTorrent BEP-46 Mutable Item.
  • Mirrors: (just BEP-46 aware bittorrent clients, really) poll the DHT pointer every now and then. When a newer snapshot is published, it resolves the new .torrent, rechecks existing data, downloads the missing delta, and continues on to seed the updated snapshot. Anyone can contribute.
  • Regular downloads: You can also use Deluge, Transmission, or another regular BitTorrent client with the most current .torrent or magnet: for a one-time download. Those clients typically do not permanently follow the signed DHT update pointer; if permanent seeding is desired, use the provided mirror client.

This is a community-run beta and is not currently an official Nano Foundation or nano.org service. Nano Snapshot Swarm is also the first public project from The OpenRai Initiative.

❣️ Please report operational feedback, especially around reliability, restart recovery, peer discovery, and bandwidth.

u/cbrunnkvist — 4 days ago

Contribution Blocked and Locked: "You're AI"

I recently tried contributing, out of necessity (LOL, my wife asked me-) a new site adapter to `yt-dlp` - Chartdrama - which was my first such contribution. It went fine code-wise and for a long time the PR sat there untouched, but then eventually I got called out for "AI spam" and was blocked while at the same time requested to provide some kind of affidavit in quasi-XML-form in order to prove(?) that I was willing to repent, confirming in writing that I had read the CONTRIBUTING guidelines (which I had ... ) but I was unable to, because in some comically Kafkaesque fashion, the PR was locked and the (ironically AI-driven, I presume) yt-dlp GirHub account went ahead and blocked me. This is not the FIRST project on GH that has had to deal with AI slop contributions (which this wasn't). But Yezuz I've never seen a rejection. A reminder to sign a contributor agreement or verify a checklist - that sort of thing is normal nowadays. But the way this project manages just seems like a mess.

For anyone with a desire for Chartdrama - check the yt-dlp/yt-dlp/pull/16946 PR on GH - I'm afraid posting a URL here will get me shot down and marked as Spam instantly here as well.

How do people deal with this sort of discouragement? I have contributed to a ton of open source projects over the decades, AND since the introduction of LLMs, and my intentions here were as genuine as ever - I just wanted to make a tool that I am myself using, better.

Has anyone had similar experience within the yt-dlp GitHub project? 😕

reddit.com
u/cbrunnkvist — 29 days ago

kilo roll-call — batch-test every model you can reach in one shot

Just merged: kilo roll-call <filter>

lets you ping all models matching a regex across every provider/alias you have configured, and see which ones are actually reachable and how fast they respond — all in parallel.

$ kilo roll-call Claude.+Haiku
Model                                 | Access | Snippet           | Latency
openrouter/anthropic/claude-3.5-haiku | NO     | (This request ... | 720ms
kilo/anthropic/claude-3.5-haiku       | YES    | Hi there! How ... | 2104ms
kilo/anthropic/claude-3-haiku         | YES    | Hello! How can... | 2436ms

What it does:

  • Filters models by a regex on their provider/model ID — e.g. deepseek.+free, gpt-5, copilot.+claude
  • Shows a table of ✅/❌ access, a response snippet, and latency
  • Outputs as table, JSON, or Markdown via --output
  • Optional quiet mode for piping into scripts

Why it's useful:

  • Find out which of your configured providers actually work right now — quotas, rate limits, and outages happen. If you're trying to get the most out of your buck and have several Providers connected
  • Compare latency across providers for the same model family
  • Smoke-test a new provider alias without writing a loop yourself
  • Feed --output json into your own tooling

Give it a try on main and let me know what you think! 🎉

u/cbrunnkvist — 3 months ago
▲ 0 r/qrcode

Hello DENSO WAVE friends! 🥳

I got tired of seeing "small" QR codes that were actually 1000x1000 PNGs with anti-aliased fuzziness. So I built qr-atomize.

It's a CLI tool and TypeScript library that takes any oversized, fuzzy, or logo-embedded QR code and "atomizes" it back to its native resolution: exactly 1 pixel per module.

(Nostalgic note: that's the way I first encountered QR codes, back in the early 00's: in the form of tiny monochrome GIF:s)

Why this exists

Regular resizing with contemporary image editing tools often creates a blurry mess. qr-atomize doesn't resize - it decodes the payload and remints a fresh 1-bit PNG from the source data at scale: 1.

How it works

  1. Decodes most common image format
  2. Parses the data to extract raw payload
  3. Remints the result at 1:1 scale

In the README. I demonstrate how a 290x290px input (6.9 KB) becomes a 29x29px output (197 bytes). ~97% reduction. 😮‍💨

What it's not

- It's not written in Rust

GitHub: [https://github.com/cbrunnkvist/qr-atomize\](https://github.com/cbrunnkvist/qr-atomize)

------

^(Disclosure (Rule 7))
^(If you scan the example images in the GitHub README or my tests, they resolve to:)
^(- `https://example.com\`)
^(- `ibm.com`)
^(- `nano:nano_1q7th5gr198u7on36jgg9ocebmu69ssaqb4qj1h3rdu4q76wmmepqbfjmkg3`)

npmjs.com
u/cbrunnkvist — 4 months ago
▲ 68 r/nanocurrency+2 crossposts

Hello Naners ;-)

I'd like to share with you a small project I've been working on: xno-skills, a CLI toolkit and MCP (Model Context Protocol) server that gives AI agents native access to Nano - send, receive, wallet management, address validation, QR generation, the works

Why this exists

LLMs are increasingly acting as agents that perform real tasks on behalf of users - including financial operations. But we know what happens today if you ask an AI assistant to do a simple task like "send 0.5 XNO to my friend": it can't. Furthermore, what's eventually costly in terms of LLM-tokens is that it will likely start going off on the typical hallucinatory trip, eventually confusing its Nano detective op. with Ledger Nano or Circle Nanopayments, and, inevitably, leaking your 24-words all over East Asia... 

Basically, without a wallet, we can't sign blocks. We have no special skill related to the block lattice, and even if we did, we have no way to interact with Nano's protocol without ending up with error-prone `curl` calls to RPC endpoints that are hopefully still online.

In short, Nano:ing is hard.

xno-skills bridges that gap 😮‍💨 We built it on the Open Wallet Standard - meaning key custody is delegated to an OWS wallet's local vault. The toolkit never sees hexadecimal seeds or mnemonic words. Signing happens in OWS, which returns the signed block. This isn't another proprietary wallet solution; it's plumbing that connects AI agents to the wallet infrastructure that is already out there.

An AI agent equipped with this tool can do everything you can do with your typical Nano wallet, and in addition to that, it gets a toolbox to:

  • List wallets and query balances
  • Validate addresses
  • Convert units with full 30-decimal precision

Its (optional - but preferred) MCP-mode means that pretty much any AI assistant with local tool support can call these functions natively - no custom integration needed.

How it works

Proof of Work (a blessing and curse in Nano) is currently generated locally first (WebGPU -> WebGL -> WASM), falling back to remote RPC only if needed. OWS can already handle endpoint failover when public RPC nodes get rate-limited - and the skills can override with alternative endpoints on the fly. Speaking of skills...

The Nano Agent Skill

You instantly get everything you need to make use of all the subcommands / the MCP mentioned above. Beyond core wallet ops, the skill includes deep Nano protocol knowledge: block types, all about the account-chain send-receive dance, representative selection...

For humans

You don't need be, or use, an AI agent - you might just be writing some shell script!

npx xno-skills receive --wallet my-wallet
npx xno-skills send --wallet my-wallet --to nano_1abc... --amount-xno 0.31337

...and so on. The difference against other CLI wallets is that you don't need any seed phrase management at all.

What it's not

  • Not a new wallet app - it's local infrastructure for automation
  • Not a fork - just RPC, regular nodes (configurable and env-overridable of course)
  • Not custodial - keys stay in your local OWS vault (that's the whole point!)
  • Not a replacement for Nault/Nautilus - different use case
  • NOT GUARANTEED BUG-FREE - don't let it handle your life savings quite yet. That's more of a general recommendation when working with AI actually... 😏

Feedback welcome, especially from anyone building automation or AI agents around Nano! 🤩🦀🥦🤖

>Install the Nano (XNO) agent toolkit from https://github.com/CasualSecurityInc/xno-skills — read the README and follow the setup instructions for your environment.

npmjs.com
u/cbrunnkvist — 4 months ago