MurmurMaps is the unified application for the Murmurations Network ecosystem.
It provides a web-based interface for:
- Cluster Management: Build clusters by querying the index and collecting matching profiles. Clusters support both directory and map-based views.
- Index Explorer: Search, filter and inspect profiles in the Murmurations Index.
- Profile Generator: Generate new profiles from one or more schemas and update generated profiles.
- Batch Importer: Import and update profiles in bulk using CSV files.
- Index Updater: Propagate profile changes to update self-hosted nodes in the Murmurations Index.
- Administration: Manage users, roles and capabilities using UCAN-based authorization.
MurmurMaps is designed to run natively on Cloudflare Pages, Workers, D1 and Queues, enabling a fully serverless, scalable architecture.
To handle long-running or resource-intensive tasks, MurmurMaps integrates with a companion Worker project called MurmurMaps Consumer, which processes background jobs asynchronously via Cloudflare Queues.
MurmurMaps is a single Cloudflare-based application.
-
Frontend handling (Cloudflare Pages)
Handles the UI, Murmurations features, authentication (UCAN), and creates jobs for long-running operations. -
Background processing (Cloudflare Workers) Processes long-running and bulk operations asynchronously via a Cloudflare Queue.
Both contexts:
- Share the same Cloudflare D1 database
- Share the same Cloudflare Queue
- Share the same data model
MurmurMaps will not function correctly in production without the background worker deployed.
- Cloudflare Pages & Workers
- Cloudflare D1
- Cloudflare Queues
- UCAN
- pnpm
- Svelte / SvelteKit
- Shadcn-svelte
- Node.js (20+)
- pnpm
First, copy the example environment file:
cp .env.example .envSecond, Set the Maps's Tools URL:
PUBLIC_TOOLS_URL=http://localhost:5173Finally, configure the Resend API Key for email-based account recovery. You can create a free account at Resend:
PRIVATE_RESEND_KEY=<YOUR_API_KEY>pnpm installpnpm generate-server-keysExample output:
✅ Generated server keys successfully!
Please add the following to your .env file:
PUBLIC_SERVER_DID_KEY=did:key:z6MkwEzW43zy5CJ4rSscCA4N6EpFGK6WHbFQrg8NxomZoEJS
PRIVATE_SERVER_KEY=SClA0WPgndVIBcYMy9KNc2SVcsEFJEjGQdyxTNHTc+75ciH16VlgrKUcw/x8t6btDeb5FpvQwk2g8AVqIZPbdw==Copy the generated values into .env (don't use the example values above!)
PUBLIC_SERVER_DID_KEY=...
PRIVATE_SERVER_KEY=...MurmurMaps uses Cloudflare D1. For local development, Wrangler creates a local SQLite-backed database.
pnpm db:migrateThe local database will be created under:
.wrangler/d1/Start the development server:
pnpm devYour application should now be available locally at: http://localhost:5173
- Log in and create a user
- In the local D1 database, update
user_roles.role_id:2→1
- Delete the core IndexedDB database in your browser
- Refresh the page and you'll be able to see admin panel through http://localhost:5173/admin
- D1 database (ex: murmur-maps)
- Queue (ex: murmur-maps-queue)
Replace <D1_DATABASE_NAME>, <D1_DATABASE_ID> and <Queue_NAME> with your newly created resource.
- Go to Cloudflare Dashboard
- Navigate to Workers & Pages
- Click Create application (top-right)
- At the bottom of the page, under "Looking to deploy Pages? Get started", click "Get started"
- Choose a source repository, typically GitHub and select the MurmurMaps repository
- During setup, open Build settings and configure:
- Framework preset:
SvelteKit
- Framework preset:
- Select "Save and Deploy"
- After first deployment, set the following Environment Variables in the Worker Settings:
- NODE_VERSION(Text):
22.14.0 - PUBLIC_TOOLS_URL(Text): The public URL of the deployed app.You can set this after the first deployment, once the Pages URL is known.
- PRIVATE_RESEND_KEY(Secret): Same as local setup.
- PUBLIC_SERVER_DID_KEY(Text): Same way to generate during local setup.
- PRIVATE_SERVER_KEY(Secret): Same way to generate during local setup.
- NODE_VERSION(Text):
- Bind with D1 database and Queue in the Worker Settings
- Setup Compatibility flags in Runtime in the Worker Settings
- Compatibility flags:
nodejs_compat_v2
- Compatibility flags:
Deploy the Worker Consumer by following the setup instructions in the MurmurMaps Consumer repository:
https://github.com/MurmurationsNetwork/MurmurMapsConsumer