# What Is OpenSEO by Every-App? A Complete Technical Overview

> Discover OpenSEO by Every-App, the open-source, AI-agent compatible SEO platform. Get a pay-as-you-go alternative to commercial tools, deployable via Docker or Cloudflare Workers.

- Repository: [Every App/open-seo](https://github.com/every-app/open-seo)
- Tags: overview
- Published: 2026-09-08

---

**OpenSEO by Every-App is an open-source, AI-agent-compatible SEO platform that provides a pay-as-you-go alternative to commercial suites like Semrush and Ahrefs, built on TanStack React Start and deployable via Docker or Cloudflare Workers.**

OpenSEO by Every-App offers a modular, self-hostable architecture designed for both individual users and teams. Unlike traditional SaaS SEO tools, it exposes its core functionality through a **Micro-Client-Protocol (MCP) server**, allowing AI agents to execute keyword research, rank tracking, and site audits programmatically while maintaining full control over data and costs.

## Core Architecture and Technology Stack

OpenSEO employs a unified codebase that separates concerns between the reactive frontend, server-side business logic, and data persistence layers.

### Frontend and Server Functions

The user interface runs on **TanStack React Start** with Vite as the build tool. All business logic resides in server functions located under `src/serverFunctions/*`, which are invoked directly from the UI or external agents.

The entry point in [`src/start.ts`](https://github.com/every-app/open-seo/blob/main/src/start.ts) initializes the application with security and middleware configurations:

```typescript
import { createCsrfMiddleware, createStart } from "@tanstack/react-start";
import { globalServerFunctionMiddleware } from "@/serverFunctions/middleware";

const csrf = createCsrfMiddleware({ filter: ctx => ctx.handlerType === "serverFn" });

export const startInstance = createStart(() => ({
  requestMiddleware: [csrf],
  functionMiddleware: globalServerFunctionMiddleware,
}));

```

The `globalServerFunctionMiddleware` defined in [`src/serverFunctions/middleware.ts`](https://github.com/every-app/open-seo/blob/main/src/serverFunctions/middleware.ts) applies **Zod** schema validation, authentication checks, rate limiting, and standardized error handling to every server function call.

### Database Layer with Drizzle ORM

Persistence is handled by **Drizzle ORM** with dual-backend support. The schema definition in [`src/db/schema.ts`](https://github.com/every-app/open-seo/blob/main/src/db/schema.ts) simultaneously supports **Cloudflare D1 (SQLite)** for lightweight deployments and **PostgreSQL** for production workloads.

Migration configurations in [`drizzle.config.ts`](https://github.com/every-app/open-seo/blob/main/drizzle.config.ts) and [`drizzle-prod.config.ts`](https://github.com/every-app/open-seo/blob/main/drizzle-prod.config.ts) ensure schema consistency across both dialects, allowing seamless switching between local development and scaled production environments.

## AI Agent Integration via MCP Server

A distinguishing feature of OpenSEO is its **Micro-Client-Protocol (MCP) server**, which exposes a JSON-RPC-style API that AI agents like Claude Code, OpenClaw, or Hermes can consume directly.

Agents authenticate using the same API key system as the web interface and invoke skills remotely:

```typescript
import { createMcpClient } from "@every-app/open-seo-mcp";

const client = createMcpClient({ apiKey: process.env.DATAFORSEO_API_KEY! });

async function getKeywords(domain: string) {
  const resp = await client.call("keywordResearch", { domain });
  return resp.keywords; // array of { keyword, searchVolume, difficulty, ... }
}

```

This architecture enables automated SEO workflows where agents perform research, monitor rankings, and generate reports without human intervention.

## Deployment and Self-Hosting Options

OpenSEO provides two officially supported deployment paths, both documented in the repository's `/docs` directory.

### Docker Deployment

For local testing or small teams, the **Docker** setup provides a single-container environment. The configuration handles all dependencies internally, making it suitable for rapid evaluation or private intranet deployments.

### Cloudflare Workers (Recommended)

The production-ready deployment targets **Cloudflare Workers**, compatible with Cloudflare's free tier. This serverless approach leverages the edge network for low-latency global access while utilizing D1 for zero-configuration database hosting.

### Startup Validation

Before accepting traffic, [`src/shared/selfhost-checks.ts`](https://github.com/every-app/open-seo/blob/main/src/shared/selfhost-checks.ts) validates critical environment variables such as `DATAFORSEO_API_KEY` and confirms the deployment mode matches the configured database dialect, preventing runtime configuration errors.

## DataForSEO Integration and Extensible Skills

Rather than maintaining proprietary data crawlers, OpenSEO integrates with **DataForSEO** as its data provider. Users supply their own DataForSEO API key, and OpenSEO pays the provider directly using a pay-as-you-go model that eliminates fixed monthly subscription costs.

### Authentication and API Keys

The [`src/lib/auth-api-key.ts`](https://github.com/every-app/open-seo/blob/main/src/lib/auth-api-key.ts) module handles secure storage and rotation of DataForSEO credentials, supporting additional layers like Turnstile CAPTCHA and Cloudflare Access for enterprise deployments.

### The Skills System

Functionality is organized into reusable **skills**—discrete workflows such as "keyword-research" or "site-audit"—that can be invoked by both the UI and AI agents. Developers extend the platform using the CLI:

```bash
npx skills add every-app/open-seo --skill keyword-research

```

New skills integrate automatically with the MCP server and appear as callable functions for agent clients.

## Summary

- **OpenSEO by Every-App** is an open-source alternative to commercial SEO platforms that eliminates fixed subscription fees through DataForSEO integration.
- The **MCP server architecture** enables AI agents to perform SEO tasks programmatically via a JSON-RPC API.
- Built on **TanStack React Start**, the platform uses server functions with Zod validation and CSRF protection for secure request handling.
- **Drizzle ORM** provides flexible database support for both Cloudflare D1 (SQLite) and PostgreSQL backends.
- **Self-hosting** is supported via Docker for testing or Cloudflare Workers for production-scale deployment.
- The **skills system** allows extension through CLI commands, making new workflows available to both human users and AI agents immediately.

## Frequently Asked Questions

### What makes OpenSEO different from commercial SEO tools like Semrush?

OpenSEO operates on a pay-as-you-go model using your own DataForSEO API key rather than charging fixed monthly subscriptions. Additionally, its MCP server architecture allows AI agents to directly invoke SEO functions, enabling automation workflows impossible with traditional SaaS dashboards.

### How do AI agents interact with OpenSEO?

AI agents connect to the Micro-Client-Protocol (MCP) server exposed by OpenSEO, calling JSON-RPC methods such as `keywordResearch` or `siteAudit`. The `createMcpClient` utility handles authentication and request formatting, allowing agents to execute complex SEO workflows using the same business logic as the web interface.

### What are the system requirements for self-hosting OpenSEO?

For Docker deployments, you need a container runtime and a valid `DATAFORSEO_API_KEY`. For Cloudflare Workers, you need a Cloudflare account (free tier compatible), Node.js 18+, and Wrangler CLI. The [`src/shared/selfhost-checks.ts`](https://github.com/every-app/open-seo/blob/main/src/shared/selfhost-checks.ts) script validates all prerequisites at startup.

### How does the DataForSEO payment model work with OpenSEO?

You provide your own DataForSEO API key in the environment configuration. OpenSEO routes all data requests through this key, and DataForSEO bills you directly based on usage. This transparent pricing model means you pay only for the SEO data you consume rather than subscribing to an all-inclusive software plan.