Imagine instead of using a web server, you used a LLM to ser...

Laan Tungir

npub1rmz9gu6de0m0u4ysrn39crrud099ahvfgs6pvasl4hpjr5ud7yus54xv06

hex

8434b61f5c28aa201a61339b41bc921790963b6f92e19094c4a5572aca4a86e4

nevent

nevent1qqsggd9krawz323qrfsn8x6phjfp0yyk8dhe9cvsjnz224e2ef9gdeqprpmhxue69uhhyetvv9ujuem4d36kwatvw5hx6mm9qgspa3z5wdxuhah72jgpecjup37xhjj7mky5gdqkwc06msep6wxlzwghdqts8

Kind-1 (TextNote)

2026-03-12T16:47:01Z

Imagine instead of using a web server, you used a LLM to serve up complete html pages.

I've been experimenting with this idea, and you can play with it on a page I call Skills-TV.

https://blossom.laantungir.net/dc2a9da5137b6f17f2e215c422c3e9020cdd3db38fe80633c1947c0140879941.png

https://laantungir.net/client/skills-tv.html

What coders have been doing lately is we use the LLM to help create the web page, and then we share the web page.

But what if instead, we share the instructions to make the web page, instead of the web page itself?

Think of the instructions as the new URL.

I have been using kind 31123/31124 in creating Didactyl, and have been calling them "Public and Private Skills". These are the new URLs and can be shared and stored across NOSTR.

HOW TO

You will need to have your own LLM model supplier. I recommend nostr:npub16g4umvwj2pduqc8kt2rv6heq2vhvtulyrsr2a20d4suldwnkl4hquekv4h or nostr:npub130mznv74rxs032peqym6g3wqavh472623mt3z5w73xq9r6qqdufs7ql29s. If you don't have either, in the sidebar, you should be able to "Create Deposit Invoice" and use lightning to start running @routstr.

In skills--tv on the left hand side you see all the available skills. You can toggle between seeing just yours skills or everyone's.

On the top you select the model you want to use. I have been using gemini-3.1-flash-light because it is capable, cheap and really fast. But you can choose any model. To create games I moved up to Claude.

Below is the iframe window. This is where the full HTML page that is returned by the LLM is displayed. In this example you see the calculator app that was created.

The bottom section is where you design, run and save the skill. The d-tag is the id of the skill. You can't have any duplicates, and you will overwrite the old skill if you do.

The Temp and the Seed are interesting. If you Temp is set to 0 and you give a seed (some models accept seeds, some don't) then generally speaking your LLM is deterministic.

What that means is that someone else running this skill will get the exact same result as you did. Your calculator app should look and work exactly like mine if you run the same skill.

If you have default blossom servers set up, you can also publish the web page. You can see this calculator app published here: https://blossom.laantungir.net/be47e6329fd0a4c9e1de757a2204ac2b5dbdda11adc34d749626f4f73acacacc

DECENTRALIZATION

Think of this analogy. If Satoshi was working today, instead of having to write the C++ code for Bitcoin, he could have instead turned The Bitcoin Whitepaper into a Skill, and published the Skill.

He is basically saying "If you take and run this skill, on this model, you will get out a working bitcoin node"

The decentralization aspect of this is super interesting.

No DNS. No IP addresses. Just pure knowledge spreading on a decentralized network.

COMPACTION

If you look at the skill required to make the calculator app, it is very few bytes, to create deterministically a much larger app. I find this fascinating. In my next versions of this I want to include some compaction metrics. I want to know how large and complete an app I can create with the smallest possible skill.

SKILLS

For more detail about SKILLS, you can read this:

https://git.laantungir.net/laantungir/didactyl/src/branch/master/docs/SKILLS.md

Have fun, and remember: Cypherpunks write code, and it is becoming easier and easier to be a Cypherpunk.

Raw JSON

{
  "kind": 1,
  "id": "8434b61f5c28aa201a61339b41bc921790963b6f92e19094c4a5572aca4a86e4",
  "pubkey": "1ec454734dcbf6fe54901ce25c0c7c6bca5edd89443416761fadc321d38df139",
  "created_at": 1773334021,
  "tags": [],
  "content": "Imagine instead of using a web server, you used a LLM to serve up complete html pages.\n\nI've been experimenting with this idea, and you can play with it on a page I call Skills-TV.\n\nhttps://blossom.laantungir.net/dc2a9da5137b6f17f2e215c422c3e9020cdd3db38fe80633c1947c0140879941.png\n\nhttps://laantungir.net/client/skills-tv.html\n\nWhat coders have been doing lately is we use the LLM to help create the web page, and then we share the web page.\n\nBut what if instead, we share the instructions to make the web page, instead of the web page itself?\n\nThink of the instructions as the new URL.\n\nI have been using kind 31123/31124 in creating Didactyl, and have been calling them \"Public and Private Skills\". These are the new URLs and can be shared and stored across NOSTR.\n\n\nHOW TO\n\nYou will need to have your own LLM model supplier. I recommend nostr:npub16g4umvwj2pduqc8kt2rv6heq2vhvtulyrsr2a20d4suldwnkl4hquekv4h or nostr:npub130mznv74rxs032peqym6g3wqavh472623mt3z5w73xq9r6qqdufs7ql29s. If you don't have either, in the sidebar, you should be able to \"Create Deposit Invoice\" and use lightning to start running @routstr.\n\nIn skills--tv on the left hand side you see all the available skills. You can toggle between seeing just yours skills or everyone's.\n\nOn the top you select the model you want to use. I have been using gemini-3.1-flash-light because it is capable, cheap and really fast. But you can choose any model. To create games I moved up to Claude.\n\nBelow is the iframe window. This is where the full HTML page that is returned by the LLM is displayed. In this example you see the calculator app that was created.\n\nThe bottom section is where you design, run and save the skill. The d-tag is the id of the skill. You can't have any duplicates, and you will overwrite the old skill if you do.\n\nThe Temp and the Seed are interesting. If you Temp is set to 0 and you give a seed (some models accept seeds, some don't) then generally speaking your LLM is deterministic. \n\nWhat that means is that someone else running this skill will get the exact same result as you did. Your calculator app should look and work exactly like mine if you run the same skill.\n\nIf you have default blossom servers set up, you can also publish the web page. You can see this calculator app published here: https://blossom.laantungir.net/be47e6329fd0a4c9e1de757a2204ac2b5dbdda11adc34d749626f4f73acacacc\n\n\nDECENTRALIZATION\n\nThink of this analogy. If Satoshi was working today, instead of having to write the C++ code for Bitcoin, he could have instead turned The Bitcoin Whitepaper into a Skill, and published the Skill. \n\nHe is basically saying \"If you take and run this skill, on this model, you will get out a working bitcoin node\"\n\nThe decentralization aspect of this is super interesting.\n\nNo DNS. No IP addresses. Just pure knowledge spreading on a decentralized network.\n\n\nCOMPACTION\n\nIf you look at the skill required to make the calculator app, it is very few bytes, to create deterministically a much larger app. I find this fascinating. In my next versions of this I want to include some compaction metrics. I want to know how large and complete an app I can create with the smallest possible skill.\n\nSKILLS\n\nFor more detail about SKILLS, you can read this:\n\nhttps://git.laantungir.net/laantungir/didactyl/src/branch/master/docs/SKILLS.md\n\nHave fun, and remember: Cypherpunks write code, and it is becoming easier and easier to be a Cypherpunk.",
  "sig": "22d43f2a7e9ab1e705659a58483a7a1acb8017a289a4f79f9d363381acc411f0597c7db16894fa8162dbc2447ca78bcbd76a65ec58f1850184f408a51b779315"
}