live · open feeds · fail-closed

Publish your calendar to the open web.

cal.pub turns any calendar into open, subscribable, privacy-first public event feeds — browsable anywhere, federated across a network of instances. No login. No tracking. Fail-closed by design — only events you explicitly publish ever leave your machine.

0 personal leaks — allowlisted events only ACAO:* CORS-open standard iCalendar PLZ-centroid coordinates — never exact
Happening on the network
  • Loading live public events…

One calendar. Many open surfaces.

cal.pub is the public web surface of the iCalendar iView — the same event data, published as open standards and rendered wherever you need it.

📡

Open feeds

Standard iCalendar .ics + GeoJSON. Subscribe in any calendar app, or fetch cross-origin — every feed sends Access-Control-Allow-Origin: *.

🔒

Fail-closed privacy

Only events you explicitly mark #+PUBLISH and that pass an allowlist ever go public. Coordinates blur to public postal-code centroids. Nothing personal leaks — by construction.

🌐

Federated

Your cal.pub is one sovereign instance in a forest. An aggregator indexes server links across calendar.network so viewers can span the whole network, not just one host.

🪞

Many surfaces

The same source renders as a web catalog, an installable offline PWA, and a live map — one iView, projected wherever your audience is.

A network, not a silo

cal.pub is one instance. The federation lives at calendar.network — a forest of sovereign instances, indexed by an aggregator that feeds every viewer.

cal.pub Instance — one calendar server: the landing + gated hub feeds. Fail-closed.
calendar.network Forest — the network of many sovereign cal.pub instances. owned
aggregator.calendar.network Aggregator — indexes + publishes server links (never private events). A murmurations index. soon
▼  feeds two viewer modes
calendar.pub Viewer · server-rendered — fetches the network server-side, renders HTML. live
demo.cal.pub Viewer · client-rendered — fetches the open feeds in-browser, renders live. live

See it live

Every surface below is running right now on open feeds — no account, no tracking.

SurfaceWhat it isStatus
demo.cal.pub ↗ Client-rendered catalog — browse by category, region, date & search.live
calendar.pub ↗ The viewer — the iCalendar iView's public web surface.live
iosm map ↗ Map lens — events on OpenStreetMap, PLZ-centroid located.live
hub feeds ↗ The gated hub — public.ics, local.ics, events.geojson (ACAO:*).live

For developers

Open standards, CORS-enabled. Build your own viewer against the same feeds these surfaces use — attribution preserved, licences intact.

Public events · iCalendar cal.pub.my.labs.ooo/public.ics

Opt-in, allowlisted, coordinate-scrubbed. Subscribe in any calendar app.

Local set · iCalendar cal.pub.my.labs.ooo/local.ics

The regional subset — same fail-closed gate.

Map layer · GeoJSON iosm.labs.ooo/events.geojson

Point features at public postal-code centroids — never exact addresses.

Sources: foss.events (ODbL-1.0 / CC-BY-SA-4.0) & frankenkids.de (Attribution + Linkback). Federation index shape: murmurations-compatible.

For AI agents

cal.pub's open feeds are machine-readable by design — CORS-open, no auth, standard formats. Drop this system prompt into Fable (or any Claude model) and your agent can navigate the network.

Fable masterprompt claude-fable-5

You are a calendar-aware AI assistant with direct access to the cal.pub open event network — a federated, privacy-first, public calendar feed ecosystem based on the iCalendar standard.

# Feed endpoints (CORS-open, no authentication required)

Public events (iCalendar .ics):
  https://cal.pub.my.labs.ooo/public.ics

Local events — Nürnberg/Franken area (iCalendar .ics):
  https://cal.pub.my.labs.ooo/local.ics

Map layer (GeoJSON):
  https://iosm.labs.ooo/events.geojson

Federation index (Murmurations-compatible JSON):
  https://cal.pub.my.labs.ooo/murmurations/index.json

Per-tenant feeds follow the pattern:
  https://{tenant}.cal.pub/public.ics

# Privacy guarantees

- Only events explicitly marked #+PUBLISH by the calendar owner are included.
- Geographic coordinates are blurred to public postal-code centroids (never exact addresses).
- No personal data, no login, no tracking, no cookies anywhere in the network.
- Fail-closed by construction: unknown events default to private.

# What you can do

- Fetch any feed directly via HTTP and parse the iCalendar or GeoJSON response.
- Answer questions about upcoming events (what, when, where, category).
- Filter by date range, category tag, or location label.
- Suggest events from the public feed that match the user's stated interests.
- Navigate the federation network by reading the murmurations index to discover other cal.pub instances.
- Subscribe users to .ics feeds by generating webcal:// links.

# Format rules

- When displaying events, include: title, date+time, location (if present), and category tag.
- Dates are in ISO-8601; times may be local (no TZ suffix) or UTC (Z suffix).
- Coordinates in GeoJSON are public PLZ-centroids rounded to 0.01° — treat them as approximate.
- The .ics CATEGORIES field maps to the cal.pub category/tag system.

Always prefer fetching live data over relying on training knowledge about specific events.
Compatible with any Claude model via the Anthropic API

The feeds this prompt references are live and CORS-open right now. Use Anthropic API with model claude-fable-5 or any Claude model, pass the above as your system message, and give the agent web-fetch capability — it can read the feeds directly.

cal.pub · iView surface