Skip to content
ant

Quick start

Dereference your first URI.

Once ant is on your PATH, see which sites this binary can address:

ant domains

Resolve, then dereference

Turn a messy URL into its canonical URI, then fetch the record:

$ ant resolve "https://www.goodreads.com/book/show/2767052-the-hunger-games"
goodreads://book/2767052

$ ant get goodreads://book/2767052
{
  "@id": "goodreads://book/2767052",
  "@type": "goodreads/book",
  "@fetched": "2026-06-14T09:31:00Z",
  "@links": { "author": ["goodreads://author/153394"] },
  "data": { ... }
}

resolve also takes a bare id when you say which site it belongs to:

$ ant resolve 20 --on x
x://status/20
$ ant url x://user/nasa
https://x.com/nasa

links prints a record's outbound edges as URIs, and export walks them and writes each record to disk as the URI tree, where the file path is the URI:

$ ant links goodreads://book/2767052
goodreads://author/153394

$ ant export goodreads://author/153394 --follow 1 --to ./data
$ ant ll goodreads:// --data ./data
goodreads://author/153394
goodreads://book/2767052

ls lists the members of a collection, and each member is itself an address you can follow:

$ ant cat wikipedia://page/Alan_Turing      # the article text
$ ant ls  wikipedia://page/Alan_Turing -n 5  # the articles it links to
$ ant ls  wikipedia://category/Computability_theory

Serve the namespace

Expose the whole namespace as dereferenceable linked data over HTTP, or as an MCP tool set for agents:

$ ant serve --addr :7777 &
$ curl -s 'localhost:7777/resolve?input=https://x.com/nasa'
{"uri":"x://user/nasa"}
$ ant mcp     # speaks MCP over stdio: get/ls/links/resolve/url/domains

Every command's full flag list is one --help away, e.g. ant export --help.