CIFR

The Identifier

What is a Research Agent Identifier?

A persistent, resolvable identifier for callable research computations — like a DOI, but for code that runs.

The short version

A Research Agent Identifier (RAI) is a permanent name for a piece of research code that can be cited, resolved, and invoked. It tells both humans and machines: this is the callable computation I'm referring to, and here's its current shape.

rai:18.cifr/2016.chanda.resiliency-pds

That single string is a citation handle in a paper, a resolution URL for a browser, and an invocation target for a machine. One identifier, three audiences.

Why RAI exists

Research has a reproducibility problem. Papers cite code, but code rots: repositories go offline, dependencies break, environments change. Surveys consistently find that over 70% of computational results cannot be reproduced even when code is nominally "available."

The DOI system solved permanence for documents. Any DOI resolves to a landing page, twenty years after publication. But DOI was designed for static objects. Research code is not static — it takes inputs, runs computation, and produces outputs. It has versions, dependencies, and execution requirements.

RAI bridges that gap. It provides the same persistence guarantees as DOI, but for executable research artifacts.

How it works

Every RAI resolves to a descriptor — a structured metadata record containing the agent's identity, interface contract, paper metadata, trust assessment, and resolution endpoints.

https://rai.cifr.org.in/18.cifr/2016.chanda.resiliency-pds
  • A browser sees an HTML landing page with the agent's metadata
  • A machine sees a JSON descriptor with invocation endpoints
  • Both use the same URL — the resolver uses content negotiation

RAI vs DOI

RAI and DOI are complementary, not competing:

DOI RAI
Identifies Documents (papers, datasets) Callable computations (agents)
Resolves to Landing page, PDF Descriptor + invocation endpoint
Versioning Points to one record Supports pinned versions (?version=1.0.0)
Composable No Yes — agents can declare dependencies on other RAIs
Foundation prefix 10 18

A paper has a DOI. Its code gets an RAI. The RAI descriptor carries the paper's DOI for cross-linking.

The identifier structure

rai:18.cifr/2016.chanda.resiliency-pds
     ─┬─ ─┬─  ─┬── ──┬── ──────┬──────
      |   |    |     |         |
      |   |    |     |         └── slug (topic descriptor)
      |   |    |     └──────────── author (lead author surname)
      |   |    └────────────────── year (publication year)
      |   └─────────────────────── registrant (registration agency)
      └─────────────────────────── foundation (18 = RAI system)

Three representations exist for different contexts:

Form Example When to use
Storage 18.cifr/2016.chanda.resiliency-pds Database, API, cifr.yml
URI rai:18.cifr/2016.chanda.resiliency-pds Citations, display
URL https://rai.cifr.org.in/18.cifr/2016.chanda.resiliency-pds Browsers, HTTP clients

Key properties

Persistent. Once minted, an RAI never changes. The metadata and resolution target can be updated, but the identifier itself is permanent.

Resolvable. Every RAI resolves via HTTP to a structured descriptor, supporting content negotiation (JSON for machines, HTML for browsers) and version pinning.

Callable. The descriptor includes an invocation endpoint. A downstream agent can declare a dependency on an RAI and the runtime calls it automatically.

Verifiable. Each (RAI, version) pair is bound to an immutable container image digest. The same agent version always runs in the same environment.

Federated. CIFR operates 18.cifr as the first registration agency, but the architecture supports institutional prefixes (18.mit, 18.ieee) from day one.