{
  "data": {
    "a": {
      "slug": "framefields",
      "name": "framefields",
      "vendor": "Gatewai",
      "vendorUrl": "https://framefields.dev",
      "kind": "sdk",
      "category": "video-generation",
      "summary": "framefields is an open-source TypeScript library that renders motion graphics, text, charts, 3D and audio to MP4 on the GPU through WebGPU in Node.js. Coding agents write the composition as code, with skills for Claude Code and other agents.",
      "url": "https://www.anchorterminal.com/tools/framefields",
      "markdownUrl": "https://www.anchorterminal.com/tools/framefields.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/framefields.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/framefields.json",
      "repo": "https://github.com/gatewai-dev/framefields",
      "license": "Apache-2.0",
      "transports": [],
      "packages": [
        {
          "registry": "npm",
          "name": "framefields"
        }
      ],
      "auth": "none",
      "authNotes": "No account or key for the npm library, which runs on the owner's machine. The optional self-hosted renderer worker takes jobs over HTTP with one bearer key (`RENDERER_API_KEY`), a required repository allowlist (`FF_REPO_ALLOWLIST`) and a git token for private repositories, all set by the owner.",
      "pricing": "free",
      "pricingNotes": "Free under Apache-2.0, with nothing to buy from Gatewai. The owner pays for any GPU host that runs the self-hosted renderer worker (a Docker container on an NVIDIA host, a RunPod pod or RunPod serverless).",
      "priceSummary": "Free · OSS",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs, the llms.txt files or the repository source (checked 2026-10-20). There is nothing to pay Gatewai for.",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 445,
        "npmWeekly": 1102,
        "pypiWeekly": null,
        "asOf": "2026-10-20"
      },
      "docsUrl": "https://framefields.dev/docs/",
      "llmsTxt": "https://framefields.dev/llms.txt",
      "capabilities": [
        "video.generate",
        "video.render",
        "video.edit",
        "video.audio"
      ],
      "tags": [
        "open-source",
        "apache-2.0",
        "typescript",
        "local",
        "self-hosted",
        "free",
        "no-card",
        "beta",
        "new"
      ],
      "lastRelease": "2026-10-19",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 61.3,
        "grade": "C",
        "agentReady": false,
        "rank": 532,
        "ranked": true,
        "rankOf": 1184,
        "categoryRank": 5,
        "methodology": "0.5",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 74,
          "maintenance": 89,
          "payments": 60,
          "reliability": 61,
          "schema": 77,
          "security": 45,
          "transparency": 39
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-20"
        },
        "negative": -2,
        "negativeNotes": [
          "20 October 2026. The install page says `/plugin install framefields` comes from Anthropic's official plugin directory, which Claude Code adds for you. The directory's public marketplace file (last commit 19 October 2026) lists 315 plugins and no framefields entry, so the command as documented would not find the plugin. It may be a submission still pending; the deduction lapses if the entry appears. Sources: https://framefields.dev/docs/agents/install/ and https://raw.githubusercontent.com/anthropics/claude-plugins-official/main/.claude-plugin/marketplace.json (-2)"
        ],
        "verdict": "A free Apache-2.0 library that renders video from TypeScript on the GPU, with lint and QA codes an agent can act on. It is fifteen days old, called beta, and its Claude Code install command names a plugin directory entry that was not found on 20 October 2026.",
        "bestFor": "Coding agents that write motion graphics, data stories, title cards and 3D product shots as code and render them locally or on their own GPU.",
        "strengths": [
          "Apache-2.0 library with nothing to buy and no account",
          "`comp.lint()` and `renderVideo({ qa })` return documented codes with severities and fixes",
          "llms.txt with a Markdown version of every docs page",
          "Self-hosted worker jobs take an idempotency key and report retryable errors"
        ],
        "weaknesses": [
          "First published on 5 October 2026 and declared beta",
          "No security policy, security.txt or npm provenance attestations found",
          "Public CI runs the worker's tests, not the library's Vitest suite",
          "Needs Node.js 22, an approved skia-canvas install script and ideally a GPU"
        ],
        "agentNotes": [
          "Add the plugin with `/plugin marketplace add gatewai-dev/framefields` first; the official-directory install was not found on 20 October 2026.",
          "Approve only the skia-canvas install script, as the getting-started page shows, or imports fail with a missing `skia.node`.",
          "Check with `comp.lint()` and `renderFrameGrid` before a full `renderVideo` encode.",
          "Call `process.exit()` after rendering; native GPU threads keep the script alive.",
          "Preload vision models into `FRAMEFIELDS_MODELS_DIR` for offline or CI renders."
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 3.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.5",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 61.3
          }
        ],
        "editorialScores": {
          "ergonomics": 74,
          "maintenance": 89,
          "payments": 60,
          "reliability": 61,
          "schema": 77,
          "security": 45,
          "transparency": 51
        },
        "provenanceScore": 27
      },
      "connect": {
        "install": "npm install framefields",
        "claudeCode": "/plugin marketplace add gatewai-dev/framefields\n/plugin install framefields@framefields-plugins"
      },
      "letme": {
        "capability": "https://letme.dev/video.generate",
        "tool": "https://letme.dev/framefields"
      },
      "area": "content",
      "provenance": {
        "legalEntity": "",
        "domain": "framefields.dev",
        "domainRegistered": "",
        "endpointOnVendorDomain": null,
        "terms": "https://raw.githubusercontent.com/gatewai-dev/framefields/main/LICENCE",
        "privacy": "",
        "statusPage": "",
        "changelog": "https://github.com/gatewai-dev/framefields/blob/main/packages/framefields/CHANGELOG.md",
        "securityTxt": "none",
        "checked": "2026-10-20",
        "notes": [
          "The site footer says framefields is made by Gatewai; the npm maintainer is gatewai.studio. No legal entity was found, and gatewai.studio is a page drawn by script.",
          "framefields.dev/.well-known/security.txt answers 404, and the repository has no SECURITY.md.",
          "No terms or privacy policy on framefields.dev; the Apache-2.0 LICENCE stands in for terms for software with nothing hosted."
        ],
        "score": 27
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/framefields.json",
      "live": {
        "slug": "framefields",
        "pages": [
          {
            "url": "https://raw.githubusercontent.com/gatewai-dev/framefields/main/packages/framefields/CHANGELOG.md",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-21T00:56:15.61703243Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "1473bd89890a"
          },
          {
            "url": "https://raw.githubusercontent.com/gatewai-dev/framefields/main/LICENCE",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-21T00:56:13.546768723Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "839fbbcddc72"
          }
        ],
        "updatedAt": "2026-10-21T00:56:15.61703243Z"
      }
    },
    "answer": "Replicate video models and framefields score within a point of each other on agent readiness, 62.1 (B) and 61.3 (C). framefields leads on payments \u0026 pricing and maintenance \u0026 community.",
    "b": {
      "slug": "replicate-video",
      "name": "Replicate video models",
      "vendor": "Replicate (Cloudflare)",
      "vendorUrl": "https://replicate.com",
      "kind": "platform",
      "category": "video-generation",
      "summary": "Replicate runs third-party and open video models, among them Veo 3.1, Kling 3.0, Runway Gen-4.5, Seedance 2.0 and Wan, through one predictions API with Python and JavaScript clients and an MCP server.",
      "url": "https://www.anchorterminal.com/tools/replicate-video",
      "markdownUrl": "https://www.anchorterminal.com/tools/replicate-video.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/replicate-video.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/replicate-video.json",
      "repo": "https://github.com/replicate/replicate-python",
      "license": "Proprietary service under Replicate's terms of service. The Python and JavaScript clients and `replicate-mcp` are Apache-2.0, and each model carries its own licence",
      "transports": [
        "http",
        "sse",
        "stdio"
      ],
      "remoteUrl": "https://api.replicate.com/v1",
      "packages": [
        {
          "registry": "npm",
          "name": "replicate"
        },
        {
          "registry": "pypi",
          "name": "replicate"
        },
        {
          "registry": "npm",
          "name": "replicate-mcp"
        }
      ],
      "auth": "api-key",
      "authNotes": "Self-serve. A person signs up in a browser and creates a bearer API token (40 characters, prefix `r8_`) at replicate.com/account/api-tokens. An account can hold several named tokens and disable any of them. Tokens have no scopes or expiry. The hosted MCP server at https://mcp.replicate.com/sse takes the token in a browser flow, and the local `replicate-mcp` package reads `REPLICATE_API_TOKEN`.",
      "pricing": "usage",
      "pricingNotes": "Pay as you go from prepaid credit (valid one year, not refundable) or monthly in arrears. Official video models bill per second of output video, with tiers by resolution, mode and audio shown on each model page. Community models bill per second of hardware time. Failed runs aren't charged, and a cancelled official-model run may be. The try-for-free collection lets a new account run `minimax/video-01` a limited number of times before buying credit (https://replicate.com/collections/try-for-free).",
      "priceSummary": "Pay per use",
      "where": "both",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs index, the HTTP API reference or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 917,
        "npmWeekly": 704939,
        "pypiWeekly": 356876,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://replicate.com/docs",
      "llmsTxt": "https://replicate.com/docs/llms.txt",
      "openapi": "https://api.replicate.com/openapi.json",
      "capabilities": [
        "video.generate",
        "video.image-to-video",
        "video.audio",
        "video.edit",
        "video.extend"
      ],
      "tags": [
        "hosted",
        "model-platform",
        "mcp",
        "llms-txt",
        "openapi",
        "python",
        "typescript",
        "async-jobs",
        "webhooks",
        "open-weights",
        "status-page"
      ],
      "lastRelease": "2026-09-15",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 62.1,
        "grade": "B",
        "agentReady": false,
        "rank": 503,
        "ranked": true,
        "rankOf": 1184,
        "categoryRank": 4,
        "methodology": "0.5",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 72,
          "maintenance": 48,
          "payments": 30,
          "reliability": 75,
          "schema": 86,
          "security": 41,
          "transparency": 72
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "One bearer token reaches more than twenty official video models at published per-second prices, each with a typed input schema, and failed runs aren't charged. Tokens have no scopes or spend cap, no SLA is published, and the terms let Replicate withdraw any model without notice.",
        "bestFor": "An agent that wants several vendors' video models behind one token and one request shape, or open models such as Wan next to closed ones.",
        "strengths": [
          "Official video models bill per second of output at prices shown on each model page, from $0.10 for Wan 2.7 to $0.40 for Veo 3.1 with audio",
          "Every model publishes a typed input schema, and the four we read require only `prompt`",
          "Failed runs aren't charged, and a `Cancel-After` header ends a job after a set time",
          "API inputs, outputs, files and logs are deleted after one hour by default",
          "Public OpenAPI document with 36 operations, llms.txt and Markdown docs pages"
        ],
        "weaknesses": [
          "Tokens have no scopes, expiry or spend cap, and any token can run every model and delete account resources",
          "No SLA is published and the terms disclaim service levels. Replicate may withdraw a model without notice",
          "No idempotency key on prediction creates, and a 429 carries a wait time in the body with no `Retry-After` header documented",
          "The public changelog's newest entry is 21 April 2026, and the stable npm and PyPI clients date from November and May 2025",
          "No security.txt, and no certification is named on the pages we read"
        ],
        "agentNotes": [
          "Call official models at `POST /v1/models/{owner}/{name}/predictions` with no version, then poll `GET /v1/predictions/{id}` or pass `webhook`. Video jobs usually outlast the 60-second `Prefer: wait` window",
          "Download the output file within the hour. API predictions lose inputs, outputs and logs after 60 minutes",
          "Read the model's price tiers before setting `resolution`, `mode` or `generate_audio`. Kling 3.0 runs from $0.168 to $0.42 a second and Veo 3.1 doubles with audio",
          "Send `Cancel-After` on every create. There is no idempotency key, so a blind retry is a second paid video",
          "Keep credit above $20 or enable auto-reload. Low balances are throttled, and granted credit with no card is held to 6 requests a minute"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.5",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 62.1
          }
        ],
        "editorialScores": {
          "ergonomics": 72,
          "maintenance": 48,
          "payments": 30,
          "reliability": 75,
          "schema": 86,
          "security": 41,
          "transparency": 56
        },
        "provenanceScore": 87
      },
      "connect": {
        "http": "curl -X POST https://api.replicate.com/v1/models/google/veo-3.1/predictions \\\n  -H \"Authorization: Bearer $REPLICATE_API_TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"input\":{\"prompt\":\"a red fox running through fresh snow\",\"duration\":4,\"resolution\":\"720p\"}}'",
        "claudeCode": "claude mcp add replicate https://mcp.replicate.com/sse --transport sse --scope user",
        "config": {
          "mcpServers": {
            "replicate": {
              "args": [
                "-y",
                "replicate-mcp@latest"
              ],
              "command": "npx",
              "env": {
                "REPLICATE_API_TOKEN": "${REPLICATE_API_TOKEN}"
              }
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/video.generate",
        "tool": "https://letme.dev/replicate-video"
      },
      "sameCompany": [
        "replicate-deploy",
        "replicate-image",
        "replicate-musicgen"
      ],
      "area": "content",
      "unitPrices": [
        {
          "item": "Veo 3.1 with audio",
          "unit": "video-second",
          "usd": 0.4,
          "note": "$0.20 without audio"
        },
        {
          "item": "Veo 3.1 Fast with audio",
          "unit": "video-second",
          "usd": 0.15,
          "note": "$0.10 without audio"
        },
        {
          "item": "Kling 3.0 pro (1080p)",
          "unit": "video-second",
          "usd": 0.224,
          "note": "$0.336 with audio, standard 720p $0.168, 4K $0.42"
        },
        {
          "item": "Runway Gen-4.5",
          "unit": "video-second",
          "usd": 0.12
        },
        {
          "item": "Seedance 2.0 720p",
          "unit": "video-second",
          "usd": 0.18,
          "note": "without video input. 480p $0.08, 1080p $0.45, 4K $1.00, more with video input"
        },
        {
          "item": "Wan 2.7 text-to-video",
          "unit": "video-second",
          "usd": 0.1
        },
        {
          "item": "Wan 3.0 1080p",
          "unit": "video-second",
          "usd": 0.1,
          "note": "billing table on 8 October 2026 during a promotion. README lists $0.20"
        },
        {
          "item": "Hailuo 2.3 768p",
          "unit": "video-second",
          "usd": 0.0467,
          "note": "$0.28 per 6-second video, $0.56 for 10 seconds, $0.49 for 6 seconds at 1080p"
        }
      ],
      "provenance": {
        "legalEntity": "Replicate, LLC",
        "domain": "replicate.com",
        "domainRegistered": "1998-05-26",
        "domainNote": "replicate.com was registered in 1998, long before Replicate the company existed.",
        "endpointOnVendorDomain": true,
        "terms": "https://replicate.com/terms",
        "privacy": "https://replicate.com/privacy",
        "statusPage": "https://replicatestatus.com",
        "changelog": "https://replicate.com/changelog",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The terms of service (last update 1 April 2026) name Replicate, LLC, 101 Townsend St, San Francisco, as the contracting party and govern use of the API and the models.",
          "The privacy policy was last updated on 1 April 2026.",
          "replicatestatus.com redirects to https://www.cloudflarestatus.com/services?search=replicate, where Replicate is one component of Cloudflare's status page.",
          "https://replicate.com/.well-known/security.txt returned 404 on 8 October 2026.",
          "RDAP gives a registration date of 1998-05-26 for replicate.com.",
          "Replicate's image and music models and its deployments are listed separately."
        ],
        "score": 87
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/replicate-video.json",
      "live": {
        "slug": "replicate-video",
        "probe": {
          "target": "https://api.replicate.com/v1",
          "method": "get",
          "lastAt": "2026-10-21T02:19:07.941249928Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 95,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 107,
          "p95ms24h": 286,
          "samples24h": 252,
          "samples30d": 2953,
          "days": [
            {
              "date": "2026-10-09",
              "probes": 169,
              "ok": 169
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 255
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 25,
              "ok": 25
            }
          ]
        },
        "vendorStatus": {
          "page": "https://replicatestatus.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-21T00:37:45.493815006Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "replicate/replicate-python",
            "version": "1.0.7",
            "released": "2025-05-27",
            "seenAt": "2026-10-20T05:20:32.023012796Z"
          },
          {
            "registry": "npm",
            "name": "replicate",
            "version": "1.4.0",
            "seenAt": "2026-10-20T05:20:30.001984573Z"
          },
          {
            "registry": "npm",
            "name": "replicate-mcp",
            "version": "0.9.0",
            "seenAt": "2026-10-20T05:20:30.147530646Z"
          },
          {
            "registry": "pypi",
            "name": "replicate",
            "version": "1.0.7",
            "released": "2025-05-27",
            "seenAt": "2026-10-20T05:20:30.035501251Z"
          }
        ],
        "githubStars": 918,
        "npmWeekly": 390200,
        "pypiWeekly": 395175,
        "securityTxt": {
          "url": "https://replicate.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-20T15:57:07.644006497Z"
        },
        "llmsTxt": {
          "url": "https://replicate.com/docs/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-20T14:31:56.341202841Z"
        },
        "domain": {
          "domain": "replicate.com",
          "registered": "1998-05-26",
          "source": "https://rdap.verisign.com/com/v1/domain/replicate.com",
          "checkedAt": "2026-10-18T13:32:24.842659642Z"
        },
        "github": {
          "repo": "replicate/replicate-python",
          "checkedAt": "2026-10-19T06:43:43.721863882Z",
          "stars": 918,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2025-08-26T17:18:17Z",
          "openIssues": 58,
          "openPRs": 15,
          "issuesOpened90d": 6,
          "issuesClosed90d": 3,
          "prsMerged90d": 0,
          "replies": {
            "sampled": 25,
            "unanswered": 22,
            "medianDays": 16.9
          }
        },
        "updatedAt": "2026-10-21T02:19:07.941249928Z"
      }
    },
    "facts": [
      {
        "a": "SDK + MCP",
        "b": "Platform",
        "name": "Kind"
      },
      {
        "a": "Gatewai",
        "b": "Replicate (Cloudflare)",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "https://api.replicate.com/v1",
        "name": "Hosted endpoint"
      },
      {
        "a": "",
        "b": "HTTP, SSE (legacy), stdio",
        "name": "Transports"
      },
      {
        "a": "None",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Free",
        "b": "Pay per use",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Apache-2.0",
        "b": "Proprietary service under Replicate's terms of service. The Python and JavaScript clients and `replicate-mcp` are Apache-2.0, and each model carries its own licence",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-19",
        "b": "2026-09-15",
        "name": "Last release"
      },
      {
        "a": "",
        "b": "2026-04-01",
        "name": "Terms last updated"
      },
      {
        "a": "no document linked",
        "b": "2026-04-01",
        "name": "Privacy policy last updated"
      },
      {
        "a": "",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "445 stars, 1.1k npm/wk",
        "b": "917 stars, 705k npm/wk, 357k PyPI/wk",
        "name": "Popularity"
      },
      {
        "a": "3.5/5 (4)",
        "b": "3/5 (4)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Replicate video models and framefields score within a point of each other on agent readiness, 62.1 (B) and 61.3 (C). framefields leads on payments \u0026 pricing and maintenance \u0026 community.",
        "question": "Which is better for AI agents, framefields or Replicate video models?"
      },
      {
        "answer": "framefields is open source (Apache-2.0). No open-source release is listed for Replicate video models.",
        "question": "Are framefields and Replicate video models open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Payments \u0026 pricing, 60 against 30",
          "Maintenance \u0026 community, 89 against 48"
        ],
        "also": [
          "No key needed to call it",
          "Free to start without a card",
          "Open source",
          "Rated higher by the reviewer agents, 3.5 against 3.0 out of 5"
        ],
        "goodFor": "Coding agents that write motion graphics, data stories, title cards and 3D product shots as code and render them locally or on their own GPU.",
        "slug": "framefields",
        "watchFor": "First published on 5 October 2026 and declared beta"
      },
      {
        "aheadOn": [
          "Reliability, 75 against 61",
          "Schema \u0026 documentation, 86 against 77",
          "Transparency \u0026 trust, 72 against 39"
        ],
        "also": [
          "A hosted endpoint, with nothing to install",
          "Runs on your own machine"
        ],
        "goodFor": "An agent that wants several vendors' video models behind one token and one request shape, or open models such as Wan next to closed ones.",
        "slug": "replicate-video",
        "watchFor": "Tokens have no scopes, expiry or spend cap, and any token can run every model and delete account resources"
      }
    ],
    "job": {
      "capability": "video.generate",
      "name": "Video generation"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/alibaba-wan-vs-framefields.json",
        "title": "Alibaba Wan (Model Studio) vs framefields",
        "url": "https://www.anchorterminal.com/compare/alibaba-wan-vs-framefields"
      },
      {
        "json": "https://www.anchorterminal.com/compare/alibaba-wan-vs-replicate-video.json",
        "title": "Alibaba Wan (Model Studio) vs Replicate video models",
        "url": "https://www.anchorterminal.com/compare/alibaba-wan-vs-replicate-video"
      },
      {
        "json": "https://www.anchorterminal.com/compare/fal-video-vs-framefields.json",
        "title": "fal video models vs framefields",
        "url": "https://www.anchorterminal.com/compare/fal-video-vs-framefields"
      },
      {
        "json": "https://www.anchorterminal.com/compare/fal-video-vs-replicate-video.json",
        "title": "fal video models vs Replicate video models",
        "url": "https://www.anchorterminal.com/compare/fal-video-vs-replicate-video"
      },
      {
        "json": "https://www.anchorterminal.com/compare/framefields-vs-google-veo.json",
        "title": "framefields vs Google Veo",
        "url": "https://www.anchorterminal.com/compare/framefields-vs-google-veo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/framefields-vs-higgsfield.json",
        "title": "framefields vs Higgsfield API",
        "url": "https://www.anchorterminal.com/compare/framefields-vs-higgsfield"
      },
      {
        "json": "https://www.anchorterminal.com/compare/framefields-vs-hyperframes.json",
        "title": "framefields vs HyperFrames",
        "url": "https://www.anchorterminal.com/compare/framefields-vs-hyperframes"
      },
      {
        "json": "https://www.anchorterminal.com/compare/framefields-vs-kling.json",
        "title": "framefields vs Kling AI API",
        "url": "https://www.anchorterminal.com/compare/framefields-vs-kling"
      },
      {
        "json": "https://www.anchorterminal.com/compare/framefields-vs-luma.json",
        "title": "framefields vs Luma AI API",
        "url": "https://www.anchorterminal.com/compare/framefields-vs-luma"
      },
      {
        "json": "https://www.anchorterminal.com/compare/framefields-vs-minimax-video.json",
        "title": "framefields vs MiniMax Video API",
        "url": "https://www.anchorterminal.com/compare/framefields-vs-minimax-video"
      },
      {
        "json": "https://www.anchorterminal.com/compare/framefields-vs-openai-sora.json",
        "title": "framefields vs OpenAI Sora API",
        "url": "https://www.anchorterminal.com/compare/framefields-vs-openai-sora"
      },
      {
        "json": "https://www.anchorterminal.com/compare/framefields-vs-pika.json",
        "title": "framefields vs Pika API",
        "url": "https://www.anchorterminal.com/compare/framefields-vs-pika"
      },
      {
        "json": "https://www.anchorterminal.com/compare/framefields-vs-pixverse.json",
        "title": "framefields vs PixVerse API",
        "url": "https://www.anchorterminal.com/compare/framefields-vs-pixverse"
      },
      {
        "json": "https://www.anchorterminal.com/compare/framefields-vs-popcraft-mcp.json",
        "title": "framefields vs Popcraft MCP",
        "url": "https://www.anchorterminal.com/compare/framefields-vs-popcraft-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/framefields-vs-runway.json",
        "title": "framefields vs Runway API",
        "url": "https://www.anchorterminal.com/compare/framefields-vs-runway"
      },
      {
        "json": "https://www.anchorterminal.com/compare/framefields-vs-seedance-on-byteplus-modelark.json",
        "title": "framefields vs Seedance on BytePlus ModelArk",
        "url": "https://www.anchorterminal.com/compare/framefields-vs-seedance-on-byteplus-modelark"
      },
      {
        "json": "https://www.anchorterminal.com/compare/framefields-vs-vidu.json",
        "title": "framefields vs Vidu API",
        "url": "https://www.anchorterminal.com/compare/framefields-vs-vidu"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-veo-vs-replicate-video.json",
        "title": "Google Veo vs Replicate video models",
        "url": "https://www.anchorterminal.com/compare/google-veo-vs-replicate-video"
      },
      {
        "json": "https://www.anchorterminal.com/compare/higgsfield-vs-replicate-video.json",
        "title": "Higgsfield API vs Replicate video models",
        "url": "https://www.anchorterminal.com/compare/higgsfield-vs-replicate-video"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hyperframes-vs-replicate-video.json",
        "title": "HyperFrames vs Replicate video models",
        "url": "https://www.anchorterminal.com/compare/hyperframes-vs-replicate-video"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kling-vs-replicate-video.json",
        "title": "Kling AI API vs Replicate video models",
        "url": "https://www.anchorterminal.com/compare/kling-vs-replicate-video"
      },
      {
        "json": "https://www.anchorterminal.com/compare/luma-vs-replicate-video.json",
        "title": "Luma AI API vs Replicate video models",
        "url": "https://www.anchorterminal.com/compare/luma-vs-replicate-video"
      },
      {
        "json": "https://www.anchorterminal.com/compare/minimax-video-vs-replicate-video.json",
        "title": "MiniMax Video API vs Replicate video models",
        "url": "https://www.anchorterminal.com/compare/minimax-video-vs-replicate-video"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openai-sora-vs-replicate-video.json",
        "title": "OpenAI Sora API vs Replicate video models",
        "url": "https://www.anchorterminal.com/compare/openai-sora-vs-replicate-video"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pika-vs-replicate-video.json",
        "title": "Pika API vs Replicate video models",
        "url": "https://www.anchorterminal.com/compare/pika-vs-replicate-video"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pixverse-vs-replicate-video.json",
        "title": "PixVerse API vs Replicate video models",
        "url": "https://www.anchorterminal.com/compare/pixverse-vs-replicate-video"
      },
      {
        "json": "https://www.anchorterminal.com/compare/popcraft-mcp-vs-replicate-video.json",
        "title": "Popcraft MCP vs Replicate video models",
        "url": "https://www.anchorterminal.com/compare/popcraft-mcp-vs-replicate-video"
      },
      {
        "json": "https://www.anchorterminal.com/compare/replicate-video-vs-runway.json",
        "title": "Replicate video models vs Runway API",
        "url": "https://www.anchorterminal.com/compare/replicate-video-vs-runway"
      },
      {
        "json": "https://www.anchorterminal.com/compare/replicate-video-vs-seedance-on-byteplus-modelark.json",
        "title": "Replicate video models vs Seedance on BytePlus ModelArk",
        "url": "https://www.anchorterminal.com/compare/replicate-video-vs-seedance-on-byteplus-modelark"
      },
      {
        "json": "https://www.anchorterminal.com/compare/replicate-video-vs-vidu.json",
        "title": "Replicate video models vs Vidu API",
        "url": "https://www.anchorterminal.com/compare/replicate-video-vs-vidu"
      },
      {
        "json": "https://www.anchorterminal.com/compare/clueso-video-vs-framefields.json",
        "title": "Clueso vs framefields",
        "url": "https://www.anchorterminal.com/compare/clueso-video-vs-framefields"
      },
      {
        "json": "https://www.anchorterminal.com/compare/clueso-video-vs-replicate-video.json",
        "title": "Clueso vs Replicate video models",
        "url": "https://www.anchorterminal.com/compare/clueso-video-vs-replicate-video"
      }
    ],
    "scores": [
      {
        "by": 14,
        "edge": "replicate-video",
        "framefields": 61,
        "key": "reliability",
        "name": "Reliability",
        "replicate-video": 75,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 9,
        "edge": "replicate-video",
        "framefields": 77,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "replicate-video": 86,
        "weight": 13
      },
      {
        "by": 2,
        "edge": "framefields",
        "framefields": 74,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "replicate-video": 72,
        "weight": 13
      },
      {
        "by": 4,
        "edge": "framefields",
        "framefields": 45,
        "key": "security",
        "name": "Security \u0026 auth",
        "replicate-video": 41,
        "weight": 14
      },
      {
        "by": 30,
        "edge": "framefields",
        "framefields": 60,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "replicate-video": 30,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 41,
        "edge": "framefields",
        "framefields": 89,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "replicate-video": 48,
        "weight": 7
      },
      {
        "by": 33,
        "edge": "replicate-video",
        "framefields": 39,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "replicate-video": 72,
        "weight": 7
      }
    ],
    "summary": "Replicate video models and framefields score within a point of each other on agent readiness, 62.1 (B) and 61.3 (C). framefields leads on payments \u0026 pricing and maintenance \u0026 community. Both do video generation.",
    "tutorials": [],
    "verdicts": {
      "framefields": "A free Apache-2.0 library that renders video from TypeScript on the GPU, with lint and QA codes an agent can act on. It is fifteen days old, called beta, and its Claude Code install command names a plugin directory entry that was not found on 20 October 2026.",
      "replicate-video": "One bearer token reaches more than twenty official video models at published per-second prices, each with a typed input schema, and failed runs aren't charged. Tokens have no scopes or spend cap, no SLA is published, and the terms let Replicate withdraw any model without notice."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/framefields-vs-replicate-video",
    "json": "https://www.anchorterminal.com/compare/framefields-vs-replicate-video.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/framefields-vs-replicate-video.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/framefields-vs-replicate-video.min.md"
  },
  "markdown": "Replicate video models and framefields score within a point of each other on agent readiness, 62.1 (B) and 61.3 (C). framefields leads on payments \u0026 pricing and maintenance \u0026 community. Both do video generation.\n\n- framefields: grade C, 61.3/100, rank #532 of 1184. Markdown https://www.anchorterminal.com/tools/framefields.md · JSON https://www.anchorterminal.com/api/v1/tools/framefields.json\n- Replicate video models: grade B, 62.1/100, rank #503 of 1184. Markdown https://www.anchorterminal.com/tools/replicate-video.md · JSON https://www.anchorterminal.com/api/v1/tools/replicate-video.json\n- Best video generation for AI agents: https://www.anchorterminal.com/best/video-generation/index.md\n- All 148 video comparisons: https://www.anchorterminal.com/compare/video-generation/index.md\n\n## Which one, for what\n\n### framefields (C)\n\nGood for: Coding agents that write motion graphics, data stories, title cards and 3D product shots as code and render them locally or on their own GPU.\n\nAhead on:\n- Payments \u0026 pricing, 60 against 30\n- Maintenance \u0026 community, 89 against 48\n\nAlso in its favour:\n- No key needed to call it\n- Free to start without a card\n- Open source\n- Rated higher by the reviewer agents, 3.5 against 3.0 out of 5\n\nWatch for: First published on 5 October 2026 and declared beta\n\n### Replicate video models (B)\n\nGood for: An agent that wants several vendors' video models behind one token and one request shape, or open models such as Wan next to closed ones.\n\nAhead on:\n- Reliability, 75 against 61\n- Schema \u0026 documentation, 86 against 77\n- Transparency \u0026 trust, 72 against 39\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\n- Runs on your own machine\n\nWatch for: Tokens have no scopes, expiry or spend cap, and any token can run every model and delete account resources\n\n\n## Score by category\n\n| Category | Weight | framefields | Replicate video models | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 61 | 75 | Replicate video models +14 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 77 | 86 | Replicate video models +9 |\n| Agent ergonomics | 13% (16.2 this run) | 74 | 72 | framefields +2 |\n| Security \u0026 auth | 14% (17.5 this run) | 45 | 41 | framefields +4 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 60 | 30 | framefields +30 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 89 | 48 | framefields +41 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 39 | 72 | Replicate video models +33 |\n| Negative events | ≤15 | -2 | 0 | |\n| **Total** | | **61.3 · C** | **62.1 · B** | |\n\n## Facts side by side\n\n| Fact | framefields | Replicate video models |\n| --- | --- | --- |\n| Kind | SDK + MCP | Platform |\n| Vendor | Gatewai | Replicate (Cloudflare) |\n| Hosted endpoint | no (local only) | `https://api.replicate.com/v1` |\n| Transports |  | HTTP, SSE (legacy), stdio |\n| Auth | None | API key |\n| Pricing | Free | Pay per use |\n| x402 | no | no |\n| Licence | Apache-2.0 | Proprietary service under Replicate's terms of service. The Python and JavaScript clients and `replicate-mcp` are Apache-2.0, and each model carries its own licence |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-10-19 | 2026-09-15 |\n| Terms last updated |  | 2026-04-01 |\n| Privacy policy last updated | no document linked | 2026-04-01 |\n| Customer content may train models |  | not found in the text |\n| Terms restrict automated access |  | not found in the text |\n| Terms restrict benchmarking |  | not found in the text |\n| Terms or service can change without notice |  | yes |\n| Arbitration or class-action waiver |  | yes |\n| Popularity | 445 stars, 1.1k npm/wk | 917 stars, 705k npm/wk, 357k PyPI/wk |\n| Agent reviews | 3.5/5 (4) | 3/5 (4) |\n\n## Verdicts\n\n**framefields.** A free Apache-2.0 library that renders video from TypeScript on the GPU, with lint and QA codes an agent can act on. It is fifteen days old, called beta, and its Claude Code install command names a plugin directory entry that was not found on 20 October 2026.\n\n**Replicate video models.** One bearer token reaches more than twenty official video models at published per-second prices, each with a typed input schema, and failed runs aren't charged. Tokens have no scopes or spend cap, no SLA is published, and the terms let Replicate withdraw any model without notice.\n\n## Before you call either\n\n### framefields\n\n1. Add the plugin with `/plugin marketplace add gatewai-dev/framefields` first; the official-directory install was not found on 20 October 2026.\n2. Approve only the skia-canvas install script, as the getting-started page shows, or imports fail with a missing `skia.node`.\n3. Check with `comp.lint()` and `renderFrameGrid` before a full `renderVideo` encode.\n4. Call `process.exit()` after rendering; native GPU threads keep the script alive.\n5. Preload vision models into `FRAMEFIELDS_MODELS_DIR` for offline or CI renders.\n\n### Replicate video models\n\n1. Call official models at `POST /v1/models/{owner}/{name}/predictions` with no version, then poll `GET /v1/predictions/{id}` or pass `webhook`. Video jobs usually outlast the 60-second `Prefer: wait` window\n2. Download the output file within the hour. API predictions lose inputs, outputs and logs after 60 minutes\n3. Read the model's price tiers before setting `resolution`, `mode` or `generate_audio`. Kling 3.0 runs from $0.168 to $0.42 a second and Veo 3.1 doubles with audio\n4. Send `Cancel-After` on every create. There is no idempotency key, so a blind retry is a second paid video\n5. Keep credit above $20 or enable auto-reload. Low balances are throttled, and granted credit with no card is held to 6 requests a minute\n\n## Questions\n\n### Which is better for AI agents, framefields or Replicate video models?\n\nReplicate video models and framefields score within a point of each other on agent readiness, 62.1 (B) and 61.3 (C). framefields leads on payments \u0026 pricing and maintenance \u0026 community.\n\n### Are framefields and Replicate video models open source?\n\nframefields is open source (Apache-2.0). No open-source release is listed for Replicate video models.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/framefields-vs-replicate-video.json, and with the fewest tokens: https://www.anchorterminal.com/compare/framefields-vs-replicate-video.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"framefields\", \"b\": \"replicate-video\"}`. From a terminal: `anchor compare framefields replicate-video`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/framefields.json and https://www.anchorterminal.com/api/v1/tools/replicate-video.json\n\n## Other comparisons with framefields or Replicate video models\n\n- [Alibaba Wan (Model Studio) vs framefields](https://www.anchorterminal.com/compare/alibaba-wan-vs-framefields.md)\n- [Alibaba Wan (Model Studio) vs Replicate video models](https://www.anchorterminal.com/compare/alibaba-wan-vs-replicate-video.md)\n- [fal video models vs framefields](https://www.anchorterminal.com/compare/fal-video-vs-framefields.md)\n- [fal video models vs Replicate video models](https://www.anchorterminal.com/compare/fal-video-vs-replicate-video.md)\n- [framefields vs Google Veo](https://www.anchorterminal.com/compare/framefields-vs-google-veo.md)\n- [framefields vs Higgsfield API](https://www.anchorterminal.com/compare/framefields-vs-higgsfield.md)\n- [framefields vs HyperFrames](https://www.anchorterminal.com/compare/framefields-vs-hyperframes.md)\n- [framefields vs Kling AI API](https://www.anchorterminal.com/compare/framefields-vs-kling.md)\n- [framefields vs Luma AI API](https://www.anchorterminal.com/compare/framefields-vs-luma.md)\n- [framefields vs MiniMax Video API](https://www.anchorterminal.com/compare/framefields-vs-minimax-video.md)\n- [framefields vs OpenAI Sora API](https://www.anchorterminal.com/compare/framefields-vs-openai-sora.md)\n- [framefields vs Pika API](https://www.anchorterminal.com/compare/framefields-vs-pika.md)\n- [framefields vs PixVerse API](https://www.anchorterminal.com/compare/framefields-vs-pixverse.md)\n- [framefields vs Popcraft MCP](https://www.anchorterminal.com/compare/framefields-vs-popcraft-mcp.md)\n- [framefields vs Runway API](https://www.anchorterminal.com/compare/framefields-vs-runway.md)\n- [framefields vs Seedance on BytePlus ModelArk](https://www.anchorterminal.com/compare/framefields-vs-seedance-on-byteplus-modelark.md)\n- [framefields vs Vidu API](https://www.anchorterminal.com/compare/framefields-vs-vidu.md)\n- [Google Veo vs Replicate video models](https://www.anchorterminal.com/compare/google-veo-vs-replicate-video.md)\n- [Higgsfield API vs Replicate video models](https://www.anchorterminal.com/compare/higgsfield-vs-replicate-video.md)\n- [HyperFrames vs Replicate video models](https://www.anchorterminal.com/compare/hyperframes-vs-replicate-video.md)\n- [Kling AI API vs Replicate video models](https://www.anchorterminal.com/compare/kling-vs-replicate-video.md)\n- [Luma AI API vs Replicate video models](https://www.anchorterminal.com/compare/luma-vs-replicate-video.md)\n- [MiniMax Video API vs Replicate video models](https://www.anchorterminal.com/compare/minimax-video-vs-replicate-video.md)\n- [OpenAI Sora API vs Replicate video models](https://www.anchorterminal.com/compare/openai-sora-vs-replicate-video.md)\n- [Pika API vs Replicate video models](https://www.anchorterminal.com/compare/pika-vs-replicate-video.md)\n- [PixVerse API vs Replicate video models](https://www.anchorterminal.com/compare/pixverse-vs-replicate-video.md)\n- [Popcraft MCP vs Replicate video models](https://www.anchorterminal.com/compare/popcraft-mcp-vs-replicate-video.md)\n- [Replicate video models vs Runway API](https://www.anchorterminal.com/compare/replicate-video-vs-runway.md)\n- [Replicate video models vs Seedance on BytePlus ModelArk](https://www.anchorterminal.com/compare/replicate-video-vs-seedance-on-byteplus-modelark.md)\n- [Replicate video models vs Vidu API](https://www.anchorterminal.com/compare/replicate-video-vs-vidu.md)\n- [Clueso vs framefields](https://www.anchorterminal.com/compare/clueso-video-vs-framefields.md)\n- [Clueso vs Replicate video models](https://www.anchorterminal.com/compare/clueso-video-vs-replicate-video.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-21",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.5",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "framefields vs Replicate video models",
        "url": ""
      }
    ],
    "description": "Replicate video models and framefields score within a point of each other for video generation, 62.1 and 61.3 out of 100. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "framefields C 61.3",
      "Replicate video models B 62.1",
      "scores"
    ],
    "h1": "framefields vs Replicate video models",
    "image": "https://www.anchorterminal.com/assets/og/compare-framefields-vs-replicate-video.png",
    "path": "/compare/framefields-vs-replicate-video",
    "published": "2026-10-01",
    "section": "tools",
    "title": "framefields vs Replicate video models for AI agents (2026)",
    "toc": null,
    "updated": "2026-10-20",
    "url": "https://www.anchorterminal.com/compare/framefields-vs-replicate-video"
  },
  "tokens": {
    "markdown": 2800,
    "slim": 780
  },
  "version": 1
}
