# What Is every-app/open-seo? A Deep Dive Into the Open-Source SEO Platform

> Discover every-app/open-seo, a powerful open-source SEO platform offering Semrush-like features. Built with TypeScript and Cloudflare Workers, it provides flexible pay-as-you-go pricing.

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

---

**every-app/open-seo is an open-source, full-stack SEO platform that delivers Semrush-like capabilities with pay-as-you-go pricing, built on TypeScript, Cloudflare Workers, and TanStack React-Start.**

every-app/open-seo is an open-source alternative to commercial SEO tools like Semrush or Ahrefs, offering full control over your data and infrastructure. Built with modern TypeScript and designed to run on Cloudflare Workers, it provides keyword research, rank tracking, backlink analysis, and site audits through a flexible self-hosted or hosted model.

## Three-Layer Architecture

The codebase follows a clean separation of concerns across three distinct layers.

### Frontend UI Layer

The **React-based interface** drives SEO workflows including keyword research, rank tracking, and AI-assisted visibility analysis. Located in [`src/start.ts`](https://github.com/every-app/open-seo/blob/main/src/start.ts), the application uses Vite for bundling and TanStack Query for server-state management.

### Server API Layer

REST-like server functions exposed through **`createServerFn`** wrappers handle all client requests. These functions in `src/serverFunctions/*.ts` validate inputs with Zod schemas before delegating to domain services. The [`src/serverFunctions/projects.ts`](https://github.com/every-app/open-seo/blob/main/src/serverFunctions/projects.ts) file contains typical CRUD endpoints for project management.

### Core Services Layer

Business logic resides in service classes like **`ProjectService`** and **`RankCheckWorkflow`**, while data access uses Drizzle ORM. The [`src/server/features/projects/services/ProjectRepository.ts`](https://github.com/every-app/open-seo/blob/main/src/server/features/projects/services/ProjectRepository.ts) implements persistence logic, supporting both SQLite (D1) and PostgreSQL backends via [`src/db/pg/client.ts`](https://github.com/every-app/open-seo/blob/main/src/db/pg/client.ts).

## Dual Authentication Modes

The platform supports two distinct authentication strategies depending on deployment needs.

**Hosted Mode** uses Better Auth configured in [`src/lib/auth.ts`](https://github.com/every-app/open-seo/blob/main/src/lib/auth.ts), supporting email/password credentials, Google social login, and Turnstile captcha protection. This mode integrates with the DataForSEO API for credit-based usage tracking.

**Self-Hosted Mode** allows deployment to your own Cloudflare account. Set `AUTH_MODE=local_noauth` to disable authentication for trusted internal development environments, as documented in [`docs/LOCAL_DEVELOPMENT.md`](https://github.com/every-app/open-seo/blob/main/docs/LOCAL_DEVELOPMENT.md).

## AI Agent Integration via MCP

The **Micro-Control-Panel (MCP)** server enables AI agents like Claude Code or OpenClaw to automate SEO tasks programmatically. The [`src/server.ts`](https://github.com/every-app/open-seo/blob/main/src/server.ts) entry point routes `/agents/*` requests to Durable Object agents after authorization, allowing external tools to trigger keyword research or site audits directly.

## Database Flexibility

Data persistence supports two backends managed through Drizzle migrations in `src/db/`.

- **Cloudflare D1 (SQLite)** serves as the default option for edge-deployed instances.
- **PostgreSQL** handles larger installations requiring complex querying capabilities.

## Working with the Codebase

The following snippets demonstrate common development patterns against the actual source.

Creating a new project invokes the validated server function:

```typescript
import { createProject } from '@/serverFunctions/projects';

// Payload validated by createProjectSchema
await createProject({ name: 'My Site', domain: 'example.com' });

```

Fetching projects on the server automatically injects authentication context:

```typescript
import { getProjects } from '@/serverFunctions/projects';

export async function load() {
  const projects = await getProjects();
  return { projects };
}

```

AI agents interact with the MCP through the public origin helper:

```typescript
import { requestWithPublicOrigin } from '@/server/mcp/public-origin';
import { MCP_ROUTE } from '@/server/mcp/context';

await fetch(requestWithPublicOrigin(new Request(`${MCP_ROUTE}/keyword-research`, {
  method: 'POST',
  body: JSON.stringify({ keyword: 'best laptops 2024' })
})));

```

Scheduled rank checks run via Cloudflare Cron triggers defined in [`src/server.ts`](https://github.com/every-app/open-seo/blob/main/src/server.ts):

```typescript
export default {
  async scheduled(_controller, env, _ctx) {
    await withPgClient(() => runScheduledRankChecks(env));
  },
};

```

## Summary

- **every-app/open-seo** provides open-source SEO tooling comparable to commercial platforms with full code ownership and pay-as-you-go pricing.
- The architecture separates concerns into **Frontend UI**, **Server API**, and **Core Services** layers using TanStack React-Start and Cloudflare Workers.
- **Dual authentication modes** support both SaaS-style hosted deployments with Better Auth and fully self-hosted internal tools via `AUTH_MODE=local_noauth`.
- The **MCP server** exposes SEO capabilities to AI agents through Durable Objects routed in [`src/server.ts`](https://github.com/every-app/open-seo/blob/main/src/server.ts).
- **Database flexibility** allows running on Cloudflare D1 (SQLite) or PostgreSQL via Drizzle ORM schemas in `src/db/`.

## Frequently Asked Questions

### Is every-app/open-seo free to use?

Yes, every-app/open-seo is open-source and free to self-host on your own Cloudflare account or compatible infrastructure. The hosted version operates on a pay-as-you-go model using DataForSEO API credits, while the self-hosted option incurs only your own infrastructure costs.

### What technology stack does every-app/open-seo use?

The platform builds on TypeScript, TanStack React-Start for the frontend, and Cloudflare Workers for the edge runtime. It uses Better Auth for authentication, Drizzle ORM for database access, and supports both SQLite (via D1) and PostgreSQL backends.

### How do I disable authentication for local development?

Set the environment variable `AUTH_MODE=local_noauth` to bypass authentication during trusted internal development. This configuration is documented in [`docs/LOCAL_DEVELOPMENT.md`](https://github.com/every-app/open-seo/blob/main/docs/LOCAL_DEVELOPMENT.md) and allows immediate API access without credential checks.

### Can AI agents automate tasks in every-app/open-seo?

Yes, the Micro-Control-Panel (MCP) server exposes SEO functionality to AI agents through the `/agents/*` endpoint hierarchy defined in [`src/server.ts`](https://github.com/every-app/open-seo/blob/main/src/server.ts). Agents like Claude Code can call these endpoints to automate keyword research, rank tracking, and site audits programmatically.