What Is OpenSEO by Every-App? A Complete Technical Overview
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 initializes the application with security and middleware configurations:
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 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 simultaneously supports Cloudflare D1 (SQLite) for lightweight deployments and PostgreSQL for production workloads.
Migration configurations in drizzle.config.ts and 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:
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 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 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:
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 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.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →