Access denied

This page is only for the streamer’s Nostr key.

Admin

Settings

Provider:
Zap Stream

Stream Days

Loading credits...

Stream Status:

My Stream. My Domain. My Power.

Stream Days are added to your balance after payment is confirmed.
Stream Days run from 00:00 to 24:00 UTC. Activating streaming unlocks the current day only.
A Stream Day is only used when you activate streaming day for that day — it never decreases automatically.

Stream Balance

Managed on simulcast.me.

Go there

Stream Backend

Choose which Zap Stream-style backend to use for metadata + live note.

Active: —

Ignore this box when using simulcast.

Stream Forwarding

Mirror your live stream to Twitch, YouTube, Facebook Gaming, Kick, Trovo, or a custom RTMP target

Forwarding is handled on Zap Stream’s servers and depends on their current backend status.

managed on simulcast.me.

Go there.

📡 Live Stream Event

When using Simulcast you must use this feature.

  1. Start streaming in OBS using your Simulcast RTMP + key.
  2. Open /live/ and wait for your stream to appear.
  3. Come back here and press Start Live Stream.
  4. When you finish streaming, press End Live Stream.
Waiting for streamId from /live/ and Nostr extension…

📝 Live Stream Information

Add your live stream information.

Waiting for streamId from your Let's Fo Live page…

📣 Live Stream Announcement

Publish a "I'm live" Nostr note.

Paste this into your announcement if you want a Nostr preview card.

Notes can be published offline. Nostr stream links require a live stream.

✉️ Live Email Announcement

Manually email verified subscribers after your player is live. LFL never sends this automatically when OBS connects or reconnects.

Loading verified subscriber count…
LFL sends exactly the message above. Include any stream link you want subscribers to receive. This draft is remembered on this browser after sending.
SMTP must be configured in Tab4. Sending is manual and one campaign is allowed per stream.

Stream Backend Servers

Zap Stream backends. See your dot balance, RTMP URLs, keys, tiers, and raw endpoint JSON.

Balance: —
Advanced details (JSON)

                        
s1.letsfo.com LF-S1
Balance: —
Advanced details (JSON)

                        
api-core.zap.stream Core
Balance: —
Advanced details (JSON)

                        
api-ca.zap.stream CA
Balance: —
Advanced details (JSON)

                        
api-uk.zap.stream UK
Balance: —
Advanced details (JSON)

                        
streamstr.net SS
Balance: —
Advanced details (JSON)

    
api.shosho.live SH
Balance: —
Advanced details (JSON)

    
live.solomonstr.com SM
balance info..
Dot are usage units used to power live streaming.

Ignore this box when using simulcast

Terms of Service

Instructions:
Go to Tab1. Under the section "Stream Backend" select a backend using the radio button. Then come back here and accept the terms. Do this for each backend. If you don't accept the terms the backend will block you from streaming.
You only have to do this once.

Change the radio button if you want to check your Terms status…

Terms: zap.stream/tos

Terms are managed on simulcast.me.

OBS Widgets

Drop these in OBS as browser sources.

Chat Zap Attack Total Zaps Top Zaps Viewers Chatters Countdown Balance  

Mobile Chat Console

Combined chat view + send box. Type to viewers or monitor your chat from your phone while streaming.

Chat console

💾 Media Storage

Choose where LFL stores uploaded media. Local is safe for small files. Backblaze B2 is recommended for large 4K videos and keeps big uploads off your LFL server.

Detecting limits…
Backblaze direct upload requires a custom CORS rule that allows browser PUT requests from this LFL domain.
One-time CORS setup key (no CLI)

Your permanent bucket-restricted media key cannot change bucket CORS. If the test reports missing writeBuckets, create a temporary Backblaze app key with access to All buckets and Read and Write, paste it here, and run the test again. LFL uses it only for this request, does not save it, and you should delete the temporary key in Backblaze afterward.

Loading storage settings…

LFL Media Server (Amethyst)

Add this address in Amethyst as a media/Blossom server. Amethyst will upload images and videos to this LFL instance and insert the protected LFL viewer URL into your note. Only the configured instance owner can upload.

Preparing media-server check…

No extra cron job is required. In Amethyst, leave mirror uploads to all Blossom servers disabled for this LFL server.

✉️ Email Delivery (SMTP)

This instance sends its own email. Credentials and subscriber addresses stay in the protected /live/data/ area and are never sent to LFL Core. Configure SPF, DKIM, and DMARC with your email provider for reliable delivery.

Loading SMTP settings…

Send a test email

Subscriber transparency

Owners see masked addresses only in the LFL interface. Viewers see their own full address. Campaign reports count messages accepted by SMTP, failed, or skipped; LFL does not track opens or clicks.

Loading subscribers…

Streamer Information

Name: —
Npub —
Pubkey (hex) —
Loading the newest local Nostr profile…

Nostr Profile kind:0

Name, avatar, bio, website, and NIP-05 come from the newest signed profile in this LFL database. Saving writes locally first; Cron5 synchronizes the same signed profile to every configured relay group.

Name
Username
Avatar URL
Banner URL
About
Website
NIP-05
—

Existing profile fields that LFL does not edit—including the Nostr Lightning address—are preserved in the replacement event.


LFL Instance Profile Overrides

Lightning Address
LFL deliberately uses this address instead of the Lightning address in your Nostr profile. This is useful for testing or directing LFL zaps to a different wallet.
LFL Icon URL
Optional custom PNG/JPG/WebP badge shown after your username around LFL. LFL shrinks it automatically. This is separate from your Nostr avatar; SVG is not allowed.
Country
Pick your country for the LFL Network Directory. Changing country does not require domain re-verification; the directory syncs it from this LFL instance.
Gender
Badge preview
Optional. If selected, this explicit LFL profile field is included in the verified Nostrich Network directory. LFL never guesses gender from a name, avatar, or ordinary Nostr profile.
Balance widget
Voice chat
LFL Version –

🔐 LFL Sync Backup

Keep signed copies of your personal LFL Nostr archive on mutual, verified LFL friends. Backups are stored in an isolated database and never appear in the host's feeds. Both instances must opt in and remain activated.

Loading Sync Backup…
How this first backup version works

LFL uses a dedicated server transport key, not your Nostr private key. Every batch and storage receipt is signed. Every valid owner-authored event and every valid event carrying the owner's p tag is eligible. Unrelated cached Watchlist events, media files, SMTP data, configuration, login sessions, and secrets are excluded. Restore controls and NWC payments will be added later without changing the stored event format or receipt ledger.

Relays & Service Providers

Nostr relay groups

You may use the same relay in several groups, but the groups do different jobs. The installer copies one starter list into all five; you can specialize the lists here afterward. Enter one wss:// relay per line.

Important: wss://relay.letsfo.com is required and is restored automatically when these settings are saved. A specialized group does not normally inherit changes made to another group.

📡 Relay Health

LFL checks actual relay behavior. Advertised payment information is shown only as a hint; successful reads and genuine LFL publication results are authoritative.

Loading relay status…

Write access is learned from real notes, videos, profiles, and deletion requests handled by LFL’s durable outbox. Until one has been sent to a relay, write access remains “Not tested.” No fake notes are published.

General relays relays

General compatibility and fallback list. It is not a master list that automatically controls every LFL feature.

ⓘ Where this is used

Shared or older Nostr features may use this list when they have no dedicated relay group. The OBS chat viewer can fall back to it when commentRelays is unavailable, and older livestream configurations can reach it after their dedicated fallbacks are empty.

Live chat relays commentRelays

Reads and publishes livestream chat activity in the sidebar and OBS chat widget.

ⓘ Spam and visibility tradeoff

These relays carry livestream comments, reactions, zap receipts, and chat profile lookups. Cron5 also sends the owner's locally saved Nostr profile here. The sidebar publishes comments and reactions here. A smaller trusted or paid list can reduce spam, but chat or zaps available only on other relays will not appear.

Notes and feed relays notesRelays

Publishes your notes and supplies the background database sync for My Notes and Notes Feed.

ⓘ How the local feed works

Cron5 publishes locally queued notes and their Nostr deletion requests here. Cron3 imports streamer activity; Cron4 rotates through this list to import followed-account activity and engagement into SQLite. My Notes and Notes Feed then load from the local database. If a note exists only on an unconfigured relay, LFL does not know it exists and does not automatically search that relay for the missing note.

Livestream discovery relays liveStreamRelays

Supplies Cron2 with livestream events for the cached Nostr Live Network, stream status, and the owner's Past Streams history.

ⓘ Read/cache behavior

Cron2 rotates through these relays for recent kind:30311 events, a bounded owner-history backfill, related profiles, and relevant deletion requests, then stores the results in SQLite. This list controls what LFL discovers; it does not control where a streaming provider publishes the original stream event.

Video relays videoRelays

Publishes video notes and synchronizes My Videos favourites and recording-list events.

ⓘ Local cards versus relay activity

My Videos initially loads its cards from local SQLite, uploads, and recordings, then performs selected relay lookups in the background. Cron5 publishes locally queued video notes, video deletion requests, and kind:30005 favourites or recording lists here. The Nostr Video Network obtains cards from verified LFL instance APIs rather than scanning this list directly in the browser.

Simulcast
Service providers
Domains only (no paths). s1.letsfo.com is always forced.
—
This saves the LFL-specific settings above. The Nostr profile has its own signed local-first save button.

Database Information

LFL separates owner-authored and owner-tagged events from cached network events in the report without moving or copying the SQLite database.

Nostr Notes & Video Network Domain Verification

Status: Unknown

To be listed on the LFL Networks, your domain must publish /.well-known/lfl.txt once to prove the domain and streamer pubkey. Country is synced separately and can be changed later without editing the file.

Backfill (sync my notes, from relays to local DB)

Installs are fast on purpose (recent events only). Use this to sync your older nostr history into your local DB.

Idle.

  

Mirror my notes to other relays

This copies your existing events from your local database to other relays. It does not “edit” your notes.

Idle.

Cron1 status (auto-activate stream day)

If Auto-Activate is enabled in Tab 1, this cron automatically activates the current Stream Day shortly after midnight UTC each day. If Auto-Activate is disabled, the streamer must activate each new Stream Day manually.

Status
Loading…
Last run
—
Last action
—
Enabled
—
—

Cron2 status (live Network & stream status)

This cron synchronizes recent kind:30311 livestream events from the configured livestream relays. It keeps the Nostr Live Network, current LIVE or ENDED stream status, previous-stream information, and streamer profile data up to date. If it stops, the Live Network and live page may show outdated information.

Status
Loading…
Last check-in
—
—

Cron3 status (my-notes & streamer activity)

This cron imports recent Nostr activity authored by or involving the streamer, including notes, replies, quotes, reposts, reactions, zaps, Guest Notes, profile updates, contact lists, and long-form articles. It keeps /live/notepad/my-notes/ current and fast. If it stops, My Notes and related streamer activity may become outdated.

Status
Loading…
Last seen
—
—

Cron4 status (notes-feed & people networks & DB maintenance)

This cron alternates between synchronizing recent activity involving the streamer and recent activity from accounts the streamer follows. Its bounded people phases also refresh the Watchlist, discover and confirm the Audience, and cache the verified Nostrich Network. It keeps /live/notepad/notes-feed/, the Nostr Notes Network, and related activity views current. It also purges expired Notes Feed cache rows and performs scheduled SQLite maintenance. If it stops, Notes Feed, the Notes Network, and people pages may become outdated, expired cache rows will not be purged, and database maintenance will not run.

Status
Loading…
Last seen
—
—

Cron5 status (outbox and relay mirroring)

This cron publishes locally queued notes, profiles, deletions, and favourites first, then advances any active setup mirror job. If it stops, events remain safe in the local database and outbox but will not synchronize to every configured relay until the worker resumes.

Status
Loading…
Last seen
—
—

How to Go Live (Quick Steps)

  1. Tab1 - Activate streaming.
  2. Tab2 - Click View balance & information to get your RTMP URL & stream key.
  3. Tab2 - Top up the selected backend server if needed.
  4. Tab1 - In Stream Backend, select the same backend you chose in step 2 using the radio buttons.
  5. Tab1 - Fill in your Live Stream Information and Live Stream Announcement (do not click on "Publish" yet).
  6. OBS - Enter the RTMP URL and stream key into OBS, then click Start Streaming.
  7. Live - Open your /live/ page and wait for the stream to appear. Refresh the page if necessary.
  8. Tab1 - Return to the admin panel. Click Publish on Live Stream Information & Live Stream Announcement.
  9. Tab1 - Live Stream Announcement is optional.
  1. Tab1 - Activate streaming.
  2. Simulcast - Get your RTMP URL, stream key, and set up NWC on simulcast.me.
  3. Tab1 - Fill in your Live Stream Information and Live Stream Announcement (do not click on "Publish" yet).
  4. OBS - Enter the RTMP URL and stream key into OBS, then click Start Streaming.
  5. Live - Open your /live/ page and wait for the stream to appear. Once it’s live, return to the Admin Panel.
  6. Tab1 - In the Live Stream Event section, click Start Live Stream.
  7. Tab1 - Click on "Publish" on Live Stream Information & Live Stream Announcement.
  8. Tab1 - Live Stream Announcement is optional.
  9. Tab1 - Don't forgot to click on "End Live Stream" after you finish streaming.

Updates

Support: Forum

The Upgrade Assistant replaces program files while preserving /live/data/, your instance configuration, uploads, keys, and assigned card/profile images. Ordinary releases do not copy or modify the SQLite database.

Loading preflight…
Loading updater…

    
💌