MMOSHCODEapp

the moshpit namespace

Claim .anything

One level deep, first come first served. Hold .eggs and every name.eggs under it is yours. Point a TLD at another one you own and the whole namespace follows — .agentic → .agent makes foo.agentic resolve to foo.agent — while any name you exempt stays exactly where it is.

you asked for misc.serviceai

misc.serviceai is free. .serviceai sells names at $2.

Buy it and it is yours to point wherever you like — the operator of the ending keeps the money, and nobody can take the name back.

Sign in with your moshcode account to buy it — the same login the CLI uses.

Sign in →

Endings you hold. Names under them are yours to mint for nothing — or put a price on the ending and let anyone buy one.

how do I host a site at a name I hold?
  1. Put your server's IPv6 address in "points at". Just the address — 2606:4700:4700::1111. IPv4 literals are refused: an A record on a small host is usually leased or NATed and goes stale without telling anyone. A hostname (box.example.com) works too.
  2. Turn the resolver on, on any machine that should reach the name: sudo moshcode dns enable. Moshpit endings are not in the public DNS root, so nothing resolves them until this is running — it answers AAAA for your names out of the registry and leaves every other lookup alone.
  3. Serve the name on that address, port 80. The browser connects straight to your box and sends Host: name.ending — nothing proxies, nothing redirects, so your web server needs a block that answers to the name.

Caddy — the http:// is required, not a typo: no public CA will issue a certificate for an ending that is not in the DNS root, so automatic HTTPS has to stay off.

http://seo.rank { root * /var/www/seo.rank file_server }

nginx:

server { listen [::]:80; server_name seo.rank; root /var/www/seo.rank; }

Or skip the typing — moshcode template install bun-caddy-sqlite writes the Caddyfile, the systemd units and a Bun + SQLite service already wired up this way. moshcode template list shows what there is.

Check it with moshcode dns resolve seo.rank, then curl -6 http://seo.rank/. A port other than 80 only works in the /n/ view — DNS carries an address and has nowhere to put a port, so the browser goes to 80 whatever the target says.

I don't run a server — can a name still be a site?

Yes. Paste an RSS or Atom URL into the feed box on any name you hold and the pit draws the site for you — the name's page becomes your posts or your episodes, hosted nowhere, updated whenever your feed is.

  • A blog feed renders as posts: date, headline, the opening lines, and a link out to the real article. Anything that emits RSS works — a static site generator, Substack, Ghost, WordPress, a Mastodon account's .rss.
  • A podcast feed renders as episodes, with cover art and a player on each one, so the name is somewhere people can actually listen rather than a page of links. Paste the same URL your show is submitted to Apple and Spotify with.
  • auto / blog / podcast picks the layout. Auto looks at whether the entries carry audio, which is right nearly always — set it by hand when it is not.

A name that has both a target and a feed serves the target: a server you have stood up beats a page we drew. Clear the target and the feed takes over, which also makes the feed a soft landing for a site that has gone down.

The feed is fetched by the pit and cached for a few minutes, so a name that gets linked somewhere busy does not turn into traffic on your feed host.

how do I publish posts to a name from a script?

One endpoint, one call. It takes your existing moshcode API key as a bearer token, and it upserts on the slug — so a webhook that fires twice updates one post rather than making two.

curl -X POST https://pit.moshcode.sh/api/moshpit/sites/blue.eggs/content \ -H "authorization: Bearer $MOSHCODE_API_KEY" \ -H "content-type: application/json" \ -d '{"kind":"link","title":"Worth reading","url":"https://example.com/post"}'
  • kind is one of section, page, text, link, image, gallery, video, embedsection and page are the nav, the rest are posts.
  • slug is the URL and the identity. Leave it out and one is made from the title; send it to update something you posted before.
  • published_at takes epoch seconds, milliseconds or a date string. Send null for a draft — written, addressable by you, absent from the site.
  • Post an array to publish up to 50 at once. Each item reports its own outcome, so one bad entry does not discard the good ones.
  • PUT and DELETE the same path plus /<slug> to replace or take one down. GET it to read the site back out.

A name that publishes anything serves its site at /n/<name>, with sections and pages as the nav and each post at /n/<name>/<slug>. Publish a page with the slug home to give the site a title and a tagline.

Order of precedence for a name: target (your server) → posts published herefeed → the ending's directory.

Sign in with your moshcode account to claim one — the same login the CLI uses.

Sign in →