OpenPanel: Open-Source Product Analytics with Session Replay and an MCP Server
OpenPanel is an open-source web and product analytics platform, an open-source alternative to Mixpanel with optional self-hosting.
At a glance
- What is it?
- OpenPanel is an open-source, self-hostable web and product analytics platform that positions itself as a Mixpanel alternative, combining cookieless tracking, funnels, cohorts, session replay, A/B testing, and an MCP server that exposes 38 tools for querying user data from AI assistants. It is AGPL-3.0 licensed and the self-hosted stack runs on ClickHouse, Postgres, Redis, and Redpanda.
- Who is it for?
- OpenPanel suits product teams that want Mixpanel-grade analytics (funnels, cohorts, user profiles, session replay) without vendor lock-in and are prepared to operate a multi-service Docker stack. The self-hosted path is genuinely available, but it requires running ClickHouse, Postgres, Redis, and Redpanda together, which is more infrastructure than lightweight alternatives like Plausible demand.
- Can I use it commercially?
- Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
- Is it still maintained?
- Yes. The repository last received commits 3 days ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 28, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What OpenPanel Measures and Who Uses It
Page analytics tools like Google Analytics or Plausible answer questions about traffic sources, page views, and bounce rates. They tell you that 1,000 people visited a page, but not what those users did next, which actions they completed, or where they dropped out of a workflow. OpenPanel is built for the second type of question: product analytics that track user behaviour across sessions, map conversion funnels, identify cohorts, and replay individual sessions.
The target users are product teams at software companies that need to understand user behaviour inside their application, not just traffic to a marketing site. Developers who want to avoid Mixpanel's commercial licensing and pricing structure, but need the same level of behavioural depth, are the primary self-hosted adopters.
The feature set listed in the README includes funnels and cohort analysis, user profiles with session history, session replay with privacy controls, real-time dashboards, A/B testing with variant breakdowns, event and funnel-based notifications, and SDKs for Web, iOS (Swift), Android (Kotlin), React Native, and server-side. The platform also connects to Google Search Console to enrich analytics data with organic search metrics.
The last push to the repository was on 2026-09-22. The project is not archived and is AGPL-3.0 licensed.
The Data Architecture Behind the Analytics
OpenPanel separates concerns across multiple services, each chosen for a specific role. The README documents the full stack. Next.js serves the dashboard. Fastify handles the event ingestion API. Postgres stores user accounts, project configuration, and profile data. ClickHouse stores events, which is the core analytical store: it is a column-oriented database designed for fast aggregation over large event tables, the type of query a funnel analysis or cohort breakdown requires.
Redis acts as the cache layer and handles pub/sub and queue coordination. BullMQ and GroupMQ manage the event processing queues. Redpanda (a Kafka-compatible message broker) runs as an optional layer for high-throughput event ingestion. Resend handles email delivery for notifications and invitations.
The docker-compose.yml defines containers for Postgres (op-db on port 5432), Redis (op-kv on port 6379), ClickHouse (op-ch on ports 8123 and 9000), and Redpanda (op-rp). The ClickHouse container requires a raised file descriptor limit: the docker-compose.yml sets ulimit nofile to 262144. On a host that enforces lower limits, this configuration will fail at startup.
This architecture is well suited to write-heavy workloads with infrequent large reads, which is the shape of analytics: many events written per second, periodic aggregation queries for reports.
Setting Up OpenPanel for Development
The development setup requires Docker, Docker Compose, Node, and pnpm. The README shows the sequence:
pnpm install
cp .env.example .env
echo "API_URL=http://localhost:3333" > apps/start/.env
pnpm dock:up
pnpm codegen
pnpm migrate:deploy # once to setup the db
pnpm devAfter those steps, the README lists the running services: the dashboard at https://localhost:3000, the API at https://api.localhost:3333, and the Bullboard queue inspector at http://localhost:9999. The pnpm dock:ch and pnpm dock:redis scripts provide direct shell access to the ClickHouse and Redis containers respectively.
The .env.example file shows the required environment variables. The ENCRYPTION_KEY is described as a symmetric key for at-rest encryption of TOTP secrets, Google Search Console tokens, and object-store credentials. The README comments suggest generating it with openssl rand -hex 32. Setting it to an empty string will break encrypted features. DATABASE_URL points to Postgres, CLICKHOUSE_URL to the ClickHouse HTTP interface, and REDIS_URL to Redis.
The package manager is [email protected] (specified in package.json). Attempting to install with npm or yarn will fail because the project uses a pnpm workspace.
Session Replay, A/B Testing, and the MCP Server
Session replay records and plays back individual user sessions including mouse movements, clicks, and form interactions. OpenPanel includes this with privacy controls built in, meaning developers can configure which elements or fields to exclude from recording. The README comparison table shows Mixpanel limits session replay to 5,000 sessions per month on a free plan and 20,000 on a paid plan, while noting OpenPanel has no limit on session recording. This claim applies to the self-hosted version where the operator controls their own infrastructure.
A/B testing is built in with detailed variant breakdowns. Teams can run experiments on feature variants and measure conversion differences without a separate experimentation platform.
The MCP server is a notable addition. The README describes it as allowing users to ask Claude, Cursor, or any MCP client about their users through 38 exposed tools, hosted, with no install required. This means a developer or product manager running Claude Code can query OpenPanel data directly from their AI assistant using natural language, without writing SQL or opening the dashboard. The hosted MCP server path requires no additional installation beyond the cloud-hosted OpenPanel instance.
Revenue tracking is also included, covering purchases, subscriptions, and lifetime value alongside standard product events.
Real Limitations of Self-Hosting OpenPanel
Running OpenPanel requires managing five separate services: Postgres, ClickHouse, Redis, Redpanda, and the application itself. ClickHouse is a resource-intensive database that performs well at scale but adds operational complexity compared to a Postgres-only setup. A developer evaluating OpenPanel for a small project should plan for this infrastructure overhead before committing.
The AGPL-3.0 licence has a specific implication for SaaS use: any organisation that modifies OpenPanel and offers it as a hosted service to others must release the modified source code under AGPL-3.0. Teams building an analytics SaaS on top of OpenPanel without releasing their modifications must obtain a separate commercial licence.
The ClickHouse container in docker-compose.yml requires a ulimit nofile value of 262144. On some default Linux configurations and Docker Desktop setups, this limit is lower, which causes ClickHouse to fail at startup with an error about file descriptor limits. This is a common first-run issue.
The project has no GitHub releases. Version tracking happens through git commits rather than tagged release artifacts, which makes it harder to pin a specific version for a production deployment and understand the changelog between updates.
Session replay, while useful, may conflict with privacy regulations in certain jurisdictions when recording user inputs. Teams operating in regulated industries need to configure the privacy controls explicitly before deploying session replay.
OpenPanel Compared to Plausible
Plausible is an open-source analytics tool with self-hosting support and a strong focus on privacy and simplicity. It is the closest lightweight alternative to OpenPanel. The README comparison table documents the differences directly.
Plausible does not provide user profiles or session history. It does not offer session replay. Its funnel analysis is described as simple goals, not the full funnel and cohort system OpenPanel provides. Plausible has no SDK for mobile platforms and no A/B testing. It is cookieless and GDPR-compliant by design, focused on page-level traffic metrics.
OpenPanel provides all the features Plausible lacks in terms of user behaviour depth: individual user profiles, session replay, full funnel and cohort analysis, A/B testing, and multi-platform SDKs. OpenPanel is also cookieless and GDPR-compliant.
The trade-off is infrastructure. Plausible runs on a much simpler stack and has lower self-hosting costs. OpenPanel's ClickHouse-based event store enables the deep analytics but adds operational overhead. A team whose primary question is 'how many people visited which pages' should use Plausible. A team whose primary question is 'where do users drop off in my onboarding flow' should use OpenPanel.
Editorial conclusion
OpenPanel suits product teams that want Mixpanel-grade analytics (funnels, cohorts, user profiles, session replay) without vendor lock-in and are prepared to operate a multi-service Docker stack. The self-hosted path is genuinely available, but it requires running ClickHouse, Postgres, Redis, and Redpanda together, which is more infrastructure than lightweight alternatives like Plausible demand. The AGPL-3.0 licence means anyone distributing a modified OpenPanel as a SaaS must open-source those changes. Teams that need only page-level traffic metrics without user identification or session recording will find the platform overbuilt. Before adopting, generate an ENCRYPTION_KEY with openssl rand -hex 32, set it in .env, and verify ClickHouse can allocate the ulimit nofile values shown in docker-compose.yml.
Frequently asked questions
What is OpenPanel?
OpenPanel is an open-source product analytics platform that tracks user behaviour with funnels, cohort analysis, user profiles, session history, and session replay. It can be self-hosted and positions itself as an alternative to Mixpanel. The project is AGPL-3.0 licensed.
Is OpenPanel free to use?
The self-hosted version is open-source and free under AGPL-3.0, meaning you can run it on your own infrastructure at no licensing cost. A cloud-hosted version is available at dashboard.openpanel.dev. AGPL-3.0 requires releasing modifications if you redistribute or host it as a service for others.
How does OpenPanel compare to Mixpanel?
Both provide funnels, cohort analysis, user profiles, and session history. OpenPanel is open-source and self-hostable; Mixpanel is a commercial SaaS product. OpenPanel is cookieless by default and claims no limit on session replay recordings in the self-hosted version. Mixpanel limits session replay on its free and paid plans.
How does OpenPanel compare to Plausible?
Plausible focuses on lightweight page-level analytics without user profiles or session tracking. OpenPanel provides user profiles, session replay, full funnel and cohort analysis, A/B testing, and multi-platform SDKs. OpenPanel's deeper analytics require a more complex self-hosting stack (ClickHouse, Postgres, Redis, Redpanda).
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/openpanel-dev-openpanel)