apps.json is a small file for publishing the apps you make.
Put it at https://yourdomain.com/apps.json, list the things you have
shipped, and now other people can discover them, follow them, render them,
index them, or build readers on top.
RSS for vibe-coded micro-apps. No registry, no submission, no central authority. Just a well-known file and a boringly useful schema.
{
"version": "1.0",
"apps": [
{ "name": "My Cool App", "url": "https://example.com/cool" }
]
}That is enough. Required fields are deliberately tiny: version, apps[],
and per-app name + url.
Everything else is additive: author info, tags, targets, version, source, prompt logs, forkability, replacement lineage. A feed can be one app or a whole little constellation.
More people are making small, weird, useful software now: vibe-coded tools, Claude skills, internal-ish utilities that escape into public life, one-off apps that are too small for an app store and too numerous for a pinned tweet.
The missing piece is not another platform. It is a way to follow a creator's apps as a set.
RSS solved this for writing. apps.json tries the same move for software:
publish a plain file, let the ecosystem decide what to do with it.
Fields like vibe_coded, forkable, source, prompt_log, and replaces
are creator-declared metadata. They are useful because readers can show them
compactly, search over them, and attach trust checks later. They are not
certification from this repo.
This repo includes example tools around the standard: a reference reader, a
seeded directory, a badge generator, and a digest. They are here to prove the
format is useful and easy to build on. They are not required infrastructure,
and they are not the canonical platform for apps.json.
The directory is "what exists"; the digest is "what changed." Both start from
public feeds in site/seeds.json, and publishing a valid
public feed is the opt-in.
The seed list does not invent feeds for real creators. Demo feeds should be owned, fictional, or clearly marked.
| Path | What it is |
|---|---|
spec/SPEC.md |
Human-readable spec (v1.0). |
spec/apps.schema.json |
JSON Schema (Draft 2020-12). |
spec/apps.example.json |
A complete example feed. |
appfeed/ |
Example/reference CLI. Publishes as @apps-json/cli. |
site/ |
Example web reader, seeded directory, digest, badge generator, and shared validator. |
docs/ECOSYSTEM.md |
Map of readers, discovery, adopters. |
docs/PUBLISHING.md |
How to publish and keep a feed fresh. |
skills/apps-json-publisher/ |
Small Codex/Claude skill for maintaining a feed. |
# try the CLI without installing
npx @apps-json/cli validate <url-or-path>
# add a new app to a local feed
npx @apps-json/cli add ./apps.json --name "Tiny Tool" --url "https://example.com/tiny"
# try the reader
open https://apps-json.vercel.app/?feed=<url-of-your-apps.json>Live preview: apps-json.vercel.app.
node scripts/build-seed-data.js
node scripts/build-seed-data.js --check
node scripts/sync-schemas.js --checkGenerated directory and digest artifacts live in site/generated/, with public
subscription outputs at site/feed.json and site/feed.xml.