Your startup is Event Blind.
Fix it in one line of code.
Signups, payments, deploys, errors — see everything that happens in your app, the moment it happens. Stop checking five tabs every morning.
-
paymentsNew subscription — Pro planjane@example.com just upgraded to Pro ($29/mo)just now
-
signupsNew user signed upmarc@startup.io created an account via Google OAuth12s ago
-
deploysDeploy succeeded — v2.4.1Production deploy completed in 34s. All health checks passed.2m ago
-
errorsPayment failed — card declinedalex@company.co — Visa ending 4242 — insufficient funds8m ago
-
uptimeAPI healthy — 99.98% uptimeAll endpoints responding <200ms. No incidents in 14 days.15m ago
-
signupsNew user signed upsophie@design.fr created an account via email23m ago
1. You check five tabs every morning.
You call it “staying on top of things.”
We call it the Tab Tax — and you’re paying it every single day.
Stripe Refresh Syndrome
You refresh Stripe 10 times a day hoping someone paid. You know it’s irrational. You do it anyway. Because you have no other way to feel the pulse of your business.
Notification Soup
You piped everything to Slack. Deploy alerts, payment webhooks, error logs, @here pings — all in one channel. You muted it last Tuesday. Now you’re Event Blind again.
Deploy Anxiety
You push to production, then spend 15 minutes checking logs and refreshing the site. No structured signal that says “checkout still works.” Just silence and hope.
The Overnight Mystery
You went to bed at midnight. You woke up at 8am. What happened in those 8 hours? Did anyone sign up? Did a payment fail? Nobody knows. Nobody ever knows.
Event Blindness
The default state of every startup. Things happen inside your app — signups, churns, errors, milestones — and you find out hours later, or never. Awareness is opt-in. Most founders never opt in.
The Vendor Trap
Existing tools cost €19/mo, give you 1,000 events, and keep your data on their cloud. You’re paying to not own your own information. That’s not a tool — that’s a lease.
2. One line of code. That’s the whole setup.
We call it One-Line Awareness: from Event Blind to fully informed in 30 seconds.
npm install palmframe
// Track your first event
import { Palmframe } from "palmframe";
const pf = new Palmframe({ apiKey: "your-key" });
await pf.track("user-signed-up", {
channel: "signups",
description: "jane@example.com joined the Pro plan",
icon: "🎉"
});
// That's it. It shows up in your Signal Feed instantly.
Works with any language. TypeScript, Python, Go, Ruby, PHP, cURL — if it can make an HTTP POST, it can talk to Palmframe. One endpoint: POST /v1/events.
3. Ship & Know. Never Ship & Pray again.
You deploy code. Palmframe tells you what happened. No gap. No guessing. No refreshing. Your app talks to you in real time.
❌ Ship & Pray
- Push to production
- Refresh the site
- Check server logs
- Open Sentry in a new tab
- Ask in Slack: “did the deploy break anything?”
- Wait 15 minutes
- Hope for the best
✅ Ship & Know
- Push to production
- Palmframe event: “Deploy v2.4.1 succeeded”
- Palmframe event: “Health check: all endpoints OK”
- Slack notification: “Checkout flow healthy”
- Get on with your day
4. Your startup’s nervous system.
A body without nerve endings can’t feel pain, can’t react, can’t survive. Same goes for a startup without event tracking.
Signal Feed, not Notification Soup
A structured, filterable, real-time stream of only the events that matter. Organized by channel. Searchable. Zero noise.
Morning Clarity, not Overnight Mystery
Open one screen. See everything that happened since you last checked. 10 seconds. That’s your whole morning check-in.
Ship & Know, not Ship & Pray
Deploy code. See the result in your Signal Feed instantly. No log-hunting. No Slack-scrolling. No hope-based engineering.
Event Sovereignty
Self-host on your infrastructure. Your events never touch our servers. docker compose up and you own everything.
Notifications that matter
Slack, Discord, email — get pinged when important things happen. Not a firehose. A curated drip of what actually matters.
Compose-Up Infrastructure
Self-hosting should be one command, not a weekend project. No Kubernetes. No Terraform. docker compose up. Done.
5. Palmframe vs. the status quo
We’re not saying LogSnag is bad. We’re saying there should be an open-source option.
| LogSnag | Slack Webhooks | Palmframe | |
|---|---|---|---|
| Price | €19/mo | Free (sort of) | Free (self-hosted) |
| Source code | Closed | N/A | Open (AGPLv3) |
| Self-hosting | No | N/A | Yes (Docker) |
| Free events | 1,000/mo | Unlimited* | Unlimited (self-hosted) |
| Structured feed | Yes | No (it’s chat) | Yes |
| Data residency | US only | US (Slack’s servers) | Wherever you host |
| Integration effort | One line | Custom per event | One line |
* Slack webhooks are “free” but you pay in engineering time, Notification Soup, and the inability to search, filter, or structure your events.
6. A note from the maker
I built Palmframe because I was tired of my morning routine: open Stripe, check signups. Open Vercel, check deploys. Open Sentry, check errors. Open Slack, scroll through 47 notifications.
Five tabs. Every morning. I called it the Five-Tab Morning and then I realized — every founder I know does the exact same thing.
I wanted one screen that answers: “What happened in my startup since I last checked?”
Palmframe is that screen. It’s open-source, self-hostable, and it takes 30 seconds to set up. I’m building it in public, one day at a time, as a solo founder.
It’s not polished. It’s not finished. But it works. And if you’re a founder who cares about knowing what’s happening in your app — I built this for you.
If you try it, reply to any email I send you. I read every single one.
7. Early feedback from Pulse-Driven Founders
Real reactions from the first people who tried Palmframe.
“I set it up in literally 30 seconds. The first time I saw a signup appear in real time, I felt something I can only describe as… relief? Like my app finally learned how to talk.”
“I was piping everything to Slack and wondering why I missed a failed payment for 3 days. Notification Soup is real. This is so much cleaner.”
“Self-hosting on a €5 Hetzner box in Frankfurt. My data never leaves the EU. GDPR by architecture, not by paperwork. Exactly what I needed.”
8. Simple pricing. No surprises.
Self-host for free, forever. Or let us host it. Either way, you start in under 2 minutes.
- Unlimited events
- Unlimited channels
- Full source code (AGPLv3)
docker compose up- Community support
- 10,000 events/mo
- 3 channels
- 7-day retention
- Email notifications
- No credit card required
- 100,000 events/mo
- Unlimited channels
- 90-day retention
- Slack + Discord + email
- Priority support
- 1,000,000 events/mo
- Unlimited everything
- 1-year retention
- Webhooks + API access
- Dedicated support
9. Questions you might have
What exactly is Palmframe?
How is this different from just using Slack webhooks?
How is this different from LogSnag?
How hard is it to self-host?
docker compose up. That’s our Compose-Up Infrastructure philosophy — if it takes more than one command, it’s too complicated. Runs on any VPS. A €5/mo Hetzner or DigitalOcean droplet is more than enough.How long does integration take?
npm install palmframe), add your API key, call pf.track(). Or skip the SDK and just make an HTTP POST to /v1/events. Works with any language. We call it One-Line Awareness.Is my data safe?
Is this ready for production?
Who’s behind this?
What’s the long-term vision?
10. Know what’s happening in your startup.
Replace the Five-Tab Morning with a Signal Feed. Cure Stripe Refresh Syndrome with one line of code. Start in under 2 minutes.