> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.adid.dev/llms.txt.
> For full documentation content, see https://docs.adid.dev/llms-full.txt.

# Quick Start

Get IDA running locally and perform your first DID and Verifiable Credential operations in under 10 minutes.

## Prerequisites

| Tool           | Version | Purpose                     |
| -------------- | ------- | --------------------------- |
| Docker         | 24+     | Container runtime           |
| Docker Compose | v2+     | Multi-service orchestration |
| curl           | any     | API requests                |
| jq             | any     | JSON formatting (optional)  |

## 1. Start the Platform

Clone the repository and start all services:

```bash
git clone https://github.com/infinia/ida.git
cd ida
docker compose up -d
```

This starts the following services:

| Service        | Port  | Description              |
| -------------- | ----- | ------------------------ |
| `ida-api`      | 8080  | IDA Platform API         |
| `ida-resolver` | 8081  | DID Universal Resolver   |
| `adi-node-1`   | 30303 | ADI blockchain node 1    |
| `adi-node-2`   | 30304 | ADI blockchain node 2    |
| `postgres`     | 5432  | Off-chain index database |
| `redis`        | 6379  | Cache                    |
| `nats`         | 4222  | Message queue            |
| `ipfs`         | 5001  | Decentralized storage    |

Verify the API is healthy:

```bash
curl http://localhost:8080/health | jq
```

```json
{
  "status": "healthy",
  "version": "0.1.0",
  "blockchain": {
    "network": "adi-devnet",
    "blockHeight": 42,
    "connected": true
  },
  "services": {
    "did": "up",
    "vc": "up",
    "agent": "up",
    "agentIdentity": "up"
  }
}
```

## 2. Create Your First DID

Generate a new Decentralized Identifier on the ADI blockchain:

```bash
curl -X POST http://localhost:8080/api/v1/dids \
  -H "Content-Type: application/json" \
  -d '{
    "method": "adi",
    "keyType": "Ed25519",
    "serviceEndpoints": [
      {
        "id": "#messaging",
        "type": "DIDCommMessaging",
        "serviceEndpoint": "https://example.com/didcomm"
      }
    ]
  }' | jq
```

Response:

```json
{
  "did": "did:adi:3f7a9b2e1c4d5f6a8b0c2d4e6f8a0b2c",
  "didDocument": {
    "@context": [
      "https://www.w3.org/ns/did/v1",
      "https://w3id.org/security/suites/ed25519-2020/v1"
    ],
    "id": "did:adi:3f7a9b2e1c4d5f6a8b0c2d4e6f8a0b2c",
    "authentication": [
      {
        "id": "did:adi:3f7a9b2e1c4d5f6a8b0c2d4e6f8a0b2c#key-1",
        "type": "Ed25519VerificationKey2020",
        "controller": "did:adi:3f7a9b2e1c4d5f6a8b0c2d4e6f8a0b2c",
        "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
      }
    ],
    "service": [
      {
        "id": "#messaging",
        "type": "DIDCommMessaging",
        "serviceEndpoint": "https://example.com/didcomm"
      }
    ]
  },
  "keys": {
    "authentication": {
      "publicKey": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP",
      "privateKey": "** STORE SECURELY - shown only once **"
    }
  },
  "transactionHash": "0x7f3a...e2b1"
}
```

## 3. Resolve a DID

Look up any DID to retrieve its DID Document:

```bash
curl http://localhost:8080/api/v1/dids/did:adi:3f7a9b2e1c4d5f6a8b0c2d4e6f8a0b2c | jq
```

## 4. Issue Your First Verifiable Credential

### 4a. Create a credential schema

```bash
curl -X POST http://localhost:8080/api/v1/schemas \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <issuer-api-key>" \
  -d '{
    "name": "UniversityDegree",
    "version": "1.0",
    "attributes": [
      { "name": "degree", "type": "string", "required": true },
      { "name": "university", "type": "string", "required": true },
      { "name": "graduationYear", "type": "integer", "required": true },
      { "name": "gpa", "type": "number", "required": false }
    ]
  }' | jq
```

### 4b. Issue a credential

```bash
curl -X POST http://localhost:8080/api/v1/credentials/issue \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <issuer-api-key>" \
  -d '{
    "schemaId": "did:adi:schema:university-degree-v1",
    "issuerDid": "did:adi:issuer-001",
    "holderDid": "did:adi:3f7a9b2e1c4d5f6a8b0c2d4e6f8a0b2c",
    "claims": {
      "degree": "Bachelor of Science in Computer Science",
      "university": "MIT",
      "graduationYear": 2025,
      "gpa": 3.8
    },
    "expirationDate": "2030-12-31T23:59:59Z"
  }' | jq
```

Response:

```json
{
  "credential": {
    "@context": [
      "https://www.w3.org/2018/credentials/v1",
      "https://ida.infinia.io/schemas/university-degree/v1"
    ],
    "type": ["VerifiableCredential", "UniversityDegreeCredential"],
    "issuer": "did:adi:issuer-001",
    "issuanceDate": "2026-03-28T10:00:00Z",
    "expirationDate": "2030-12-31T23:59:59Z",
    "credentialSubject": {
      "id": "did:adi:3f7a9b2e1c4d5f6a8b0c2d4e6f8a0b2c",
      "degree": "Bachelor of Science in Computer Science",
      "university": "MIT",
      "graduationYear": 2025,
      "gpa": 3.8
    },
    "proof": {
      "type": "Ed25519Signature2020",
      "created": "2026-03-28T10:00:00Z",
      "verificationMethod": "did:adi:issuer-001#key-1",
      "proofPurpose": "assertionMethod",
      "proofValue": "z58DAdFfa9SkqZMVPxAQpic7ndTn4..."
    }
  },
  "credentialId": "urn:uuid:f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
```

## 5. Verify a Credential

```bash
curl -X POST http://localhost:8080/api/v1/credentials/verify \
  -H "Content-Type: application/json" \
  -d '{
    "credential": { ... }
  }' | jq
```

Response:

```json
{
  "verified": true,
  "checks": {
    "signature": "valid",
    "issuerDid": "resolved",
    "schema": "compliant",
    "expiration": "not_expired",
    "revocation": "not_revoked"
  }
}
```

## 6. Create an AI Agent DID

```bash
curl -X POST http://localhost:8080/api/v1/agents \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <operator-api-key>" \
  -d '{
    "name": "Shopping Assistant",
    "operatorDid": "did:adi:3f7a9b2e1c4d5f6a8b0c2d4e6f8a0b2c",
    "model": "gpt-4o",
    "capabilities": ["shopping", "price-comparison", "order-placement"],
    "autonomyLevel": "Junior"
  }' | jq
```

Response includes the agent's DID (`did:adi:agent:7f3a...e2b1`) and published Agent Card.

## 7. Stop the Platform

```bash
docker compose down
```

## Next Steps

* [Development Setup](development.md) -- set up a local dev environment without Docker
* [did:adi Method Specification](../did-method/specification.md) -- full DID method spec
* [AI Agent Identity Overview](../ai-agent-identity/overview.md) -- agent identity deep dive
* [API Reference](../api/authentication.md) -- full API documentation