{
  "$schema_doc": "https://gtmstacker.com/registry/schema/entry.schema.json",
  "stability": "emerging",
  "generator": "agentic-media-registry",
  "generated_at": "2026-09-21T00:00:00Z",
  "id": "com.gtmstacker.registry/tool/harnessrouter",
  "type": "tool",
  "slug": "harnessrouter",
  "canonical_url": "https://gtmstacker.com/registry/tool/harnessrouter/",
  "title": "HarnessRouter",
  "description": "Apache-2.0 abstraction layer, pitched as an OpenRouter for agent harnesses: one API your product calls to run a task, retrieve the result, and switch between coding-agent harnesses (Codex, Claude Code, Hermes and others) without re-implementing each integration. It handles persistent sessions, file handling and streaming behind that single interface. Self-hostable via Docker with your own keys and infrastructure; a managed cloud version exists separately.",
  "category": "integration-orchestration",
  "tags": [
    "integration-orchestration",
    "mcp-agents",
    "agent-harness",
    "self-hostable",
    "byo-key"
  ],
  "status": "active",
  "revision": 1,
  "content_hash": "ec8fbf49f3ea6e2e571810d2071ac887c8b1fda08d0ef98d633972b93ceec650",
  "date_published": "2026-09-21T00:00:00Z",
  "date_modified": "2026-09-21T00:00:00Z",
  "source": {
    "name": "github · harnessrouter/harnessrouter",
    "url": "https://github.com/harnessrouter/harnessrouter"
  },
  "license": "Apache-2.0",
  "one_liner": "HarnessRouter gives your product one Apache-2.0 API across agent harnesses (Codex, Claude Code, Hermes), so you can switch harness without rewrites.",
  "open_source": "yes",
  "self_hostable": "yes",
  "pricing_model": "freemium",
  "who_its_for": "A builder shipping a product on top of a coding agent who does not want to hardcode a single harness, and wants to try a new one, or fall back to another, through one interface instead of rewriting the integration each time.",
  "aliases": [
    "harnessrouter",
    "Harness Router"
  ],
  "alternatives": [
    "monid",
    "google-ax"
  ],
  "secondary_categories": [
    "mcp-agents",
    "ai-infrastructure"
  ],
  "last_verified": "2026-09-21",
  "evidence": {
    "claim_type": "mixed",
    "source_id": "https://github.com/harnessrouter/harnessrouter",
    "note": "Apache-2.0, ~1.8k stars, ~486 commits, and the single-API-over-many-harnesses design with persistent sessions, file handling and streaming confirmed on the repo (WebFetch 2026-09-21, harnessrouter org). Free and self-hostable via Docker with your own keys; a separate managed cloud is the paid path. The OpenRouter analogy is the project's own framing."
  },
  "caveats": "The value is real only if you actually switch or hedge harnesses; if you are committed to one, the abstraction is overhead. Self-host is free with your keys, the hosted service is the paid convenience, and an aggregation layer is one more dependency in the path between your product and the agent.",
  "lead": "Apache-2.0 abstraction layer, pitched as an OpenRouter for agent harnesses: one API your product calls to run a task, retrieve the result, and switch between coding-agent harnesses (Codex, Claude Code, Hermes and others) without re-implementing each integration. It handles persistent sessions, file handling and streaming behind that single interface. It…",
  "chunks": [
    {
      "index": 0,
      "heading_path": [],
      "est_tokens": 118,
      "text": "Apache-2.0 abstraction layer, pitched as an OpenRouter for agent harnesses: one API your product calls to run a task, retrieve the result, and switch between coding-agent harnesses (Codex, Claude Code, Hermes and others) without re-implementing each integration. It handles persistent sessions, file handling and streaming behind that single interface. It is self-hostable via Docker with your own keys and infrastructure, and a managed cloud version exists separately."
    },
    {
      "index": 1,
      "heading_path": [
        null,
        "Provenance"
      ],
      "est_tokens": 200,
      "text": "a task, retrieve the result, and switch between coding-agent harnesses (Codex, Claude Code, Hermes and others) without re-implementing each integration. It handles persistent sessions, file handling and streaming behind that single interface. It is self-hostable via Docker with your own keys and infrastructure, and a managed cloud version exists separately.\n\n- Apache-2.0, ~1.8k stars, ~486 commits, and the one-API-over-many-harnesses design independently WebFetch-verified on the repo 2026-09-21 (github.com/harnessrouter/harnessrouter).\n- Surfaced via the 2026-09-21 viral-posts brief (a widely-followed engineer's \"finally, an OpenRouter for agent harnesses\", ~730 likes / ~92k views).\n- Curated from the GTM Stacker signal registry (2026-09-21 pass); license independently verified 2026-09-21."
    },
    {
      "index": 2,
      "heading_path": [
        null,
        "Why it matters for a GTM stack"
      ],
      "est_tokens": 303,
      "text": "~1.8k stars, ~486 commits, and the one-API-over-many-harnesses design independently WebFetch-verified on the repo 2026-09-21 (github.com/harnessrouter/harnessrouter). - Surfaced via the 2026-09-21 viral-posts brief (a widely-followed engineer's \"finally, an OpenRouter for agent harnesses\", ~730 likes / ~92k views). - Curated from the GTM Stacker signal registry (2026-09-21 pass); license independently verified 2026-09-21.\n\nThe harness, the thing that lets an agent read files, call tools and loop, is becoming the layer teams get locked into, the same way they once got locked into a single model. HarnessRouter does for harnesses what OpenRouter did for models: put one API in front of them so your product can run a task on Codex today and Claude Code tomorrow without a rewrite. For a builder shipping GTM tooling on top of an agent, that is the difference between betting the product on one vendor's harness and keeping the option open. The honest read: this only pays off if you genuinely switch or hedge, the hosted version is where the money is, and every abstraction layer is another dependency to trust. If you are building on agents and do not want to be married to one harness, it earns a look."
    }
  ],
  "alternates": {
    "markdown": "https://gtmstacker.com/registry/tool/harnessrouter/index.md",
    "html": "https://gtmstacker.com/registry/tool/harnessrouter/",
    "json": "https://gtmstacker.com/registry/tool/harnessrouter/index.json",
    "server_json": "https://gtmstacker.com/registry/tool/harnessrouter/server.json"
  },
  "jsonld": {
    "@context": "https://schema.org",
    "@graph": [
      {
        "@type": "WebSite",
        "@id": "https://gtmstacker.com/#website",
        "url": "https://gtmstacker.com/",
        "name": "GTM Stacker Agent Registry",
        "description": "A daily-updated, agent-native registry of open-source tool discoveries, tool updates, and curated news for the go-to-market / RevOps engineering niche. Machine-readable first: agents can discover, parse, page, and delta-sync it without scraping HTML.",
        "inLanguage": "en",
        "publisher": {
          "@id": "https://gtmstacker.com/#organization"
        }
      },
      {
        "@type": "Organization",
        "@id": "https://gtmstacker.com/#organization",
        "name": "GTM Stacker",
        "url": "https://gtmstacker.com",
        "description": "The growth-systems practice of Theo Popov: AI-native enrichment, outbound, content engines and internal tooling for startups and venture programs. Its agent-native media property, the GTM Stacker Agent Registry, maintains a daily-updated catalog of open-source go-to-market and RevOps tools that both people and AI engines can discover, compare, and cite.",
        "foundingDate": "2024-08",
        "knowsAbout": [
          "go-to-market engineering",
          "RevOps",
          "sales automation",
          "marketing operations",
          "open-source software",
          "AI agents"
        ],
        "founder": {
          "@type": "Person",
          "@id": "https://gtmstacker.com/#founder",
          "name": "Theo Popov",
          "jobTitle": "Growth Operations & GTM Systems",
          "url": "https://gtmstacker.com/about/",
          "sameAs": [
            "https://www.linkedin.com/in/theo-popov",
            "https://x.com/Theo_Popov",
            "https://github.com/theopopov"
          ],
          "worksFor": {
            "@id": "https://gtmstacker.com/#organization"
          }
        },
        "sameAs": [
          "https://www.linkedin.com/company/gtmstacker",
          "https://www.youtube.com/@gtmstacker",
          "https://www.instagram.com/gtmstacker/",
          "https://www.tiktok.com/@gtmstacker"
        ],
        "mainEntityOfPage": "https://gtmstacker.com/registry/about/"
      },
      {
        "@type": "SoftwareApplication",
        "@id": "https://gtmstacker.com/registry/tool/harnessrouter/#software",
        "name": "HarnessRouter",
        "identifier": "io.github.harnessrouter/harnessrouter",
        "description": "Apache-2.0 abstraction layer, pitched as an OpenRouter for agent harnesses: one API your product calls to run a task, retrieve the result, and switch between coding-agent harnesses (Codex, Claude Code, Hermes and others) without re-implementing each integration. It handles persistent sessions, file handling and streaming behind that single interface. Self-hostable via Docker with your own keys and infrastructure; a managed cloud version exists separately.",
        "applicationCategory": "DeveloperApplication",
        "url": "https://gtmstacker.com/registry/tool/harnessrouter/",
        "datePublished": "2026-09-21T00:00:00Z",
        "dateModified": "2026-09-21T00:00:00Z",
        "isPartOf": {
          "@id": "https://gtmstacker.com/#website"
        },
        "license": "https://spdx.org/licenses/Apache-2.0.html",
        "codeRepository": "https://github.com/harnessrouter/harnessrouter",
        "keywords": "integration-orchestration, mcp-agents, ai-infrastructure, agent-harness, self-hostable, byo-key",
        "author": {
          "@type": "Organization",
          "name": "harnessrouter",
          "url": "https://github.com/harnessrouter",
          "sameAs": [
            "https://github.com/harnessrouter/harnessrouter"
          ]
        },
        "offers": {
          "@type": "Offer",
          "price": 0,
          "priceCurrency": "USD"
        },
        "isSimilarTo": [
          {
            "@type": "SoftwareApplication",
            "name": "Monid",
            "url": "https://gtmstacker.com/registry/tool/monid/",
            "applicationCategory": "DeveloperApplication",
            "offers": {
              "@type": "Offer",
              "price": 0,
              "priceCurrency": "USD"
            }
          },
          {
            "@type": "SoftwareApplication",
            "name": "Google AX",
            "url": "https://gtmstacker.com/registry/tool/google-ax/",
            "applicationCategory": "DeveloperApplication",
            "offers": {
              "@type": "Offer",
              "price": 0,
              "priceCurrency": "USD"
            }
          }
        ]
      },
      {
        "@type": "BreadcrumbList",
        "@id": "https://gtmstacker.com/registry/tool/harnessrouter/#breadcrumb",
        "itemListElement": [
          {
            "@type": "ListItem",
            "position": 1,
            "name": "GTM Stacker Registry",
            "item": "https://gtmstacker.com/registry/"
          },
          {
            "@type": "ListItem",
            "position": 2,
            "name": "Integration Orchestration",
            "item": "https://gtmstacker.com/registry/category/integration-orchestration/"
          },
          {
            "@type": "ListItem",
            "position": 3,
            "name": "HarnessRouter",
            "item": "https://gtmstacker.com/registry/tool/harnessrouter/"
          }
        ]
      }
    ]
  },
  "tool": {
    "name": "io.github.harnessrouter/harnessrouter",
    "repository": {
      "url": "https://github.com/harnessrouter/harnessrouter",
      "source": "github"
    }
  }
}
