u/cbrunnkvist

▲ 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 — 10 days 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 — 10 days ago