<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <updated>2026-03-27T08:33:25Z</updated>
  <generator>https://nostr.ae</generator>

  <title>Nostr notes by </title>
  <author>
    <name></name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://nostr.ae/npub1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzqujme.rss" />
  <link href="https://nostr.ae/npub1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzqujme" />
  <id>https://nostr.ae/npub1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzqujme</id>
  <icon></icon>
  <logo></logo>


  <title>Nostr notes on haven.laoc.xyz</title>
  <link href="https://nostr.ae/r/haven.laoc.xyz" />
  <link rel="self" type="application/atom+xml" href="https://nostr.ae/r/haven.laoc.xyz.rss" />
  <id>https://nostr.ae/r/haven.laoc.xyz</id>
  <icon></icon>
  <logo></logo>



  <entry>
    <id>https://nostr.ae/nevent1qqsr5aw629m6ahnhl6vcal9eqsztxr00sqmmdzu0np4g3ydp63cmmtspz3mhxue69uhksctkv4hzumrpda3ju7re0gpzq8zl7092ekzzcqwu4rehsgcmzesh29kjznd8t3aw4wlfu8h7ns8kkq89wh</id>
    
      <title type="html">Might be just called &amp;#34;Community&amp;#34; now: #naddr1qv…l3jw It ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsr5aw629m6ahnhl6vcal9eqsztxr00sqmmdzu0np4g3ydp63cmmtspz3mhxue69uhksctkv4hzumrpda3ju7re0gpzq8zl7092ekzzcqwu4rehsgcmzesh29kjznd8t3aw4wlfu8h7ns8kkq89wh" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2l0pmr7lmmg7a93gmevm5dzgchgklwslch5423x0jflr0g8y39hqpzemhxue69uhhyetvv9ujumt0wd68ytnsw43z7fs7f7e&#39;&gt;nevent1q…7f7e&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Might be just called &amp;#34;Community&amp;#34; now:&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting  &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/naddr1qvzqqqrcvgpzqesd33ux28msfplvnwxac2p7988j2ctf8hdrhgjx607nczxmkuyrqq8kummnw3ez6cm0d4kh2mnfw3useql3jw&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;naddr1qv…l3jw&lt;/a&gt;&lt;/span&gt;&lt;br/&gt; &lt;/div&gt; Any Nostr key pair can become a community with no special relay or infrastructure required. A single event declares the community&#39;s relays, blossom servers, and named content sections. Each section is backed by a profile list that controls publishing access.&lt;br/&gt;&lt;br/&gt;Any existing event kind can target one or more communities via an `h` tag, making most existing publications community-aware without changing their format.&lt;br/&gt;&lt;br/&gt;# Community Creation Event (kind:10222)&lt;br/&gt;&lt;br/&gt;A community is created when a key pair publishes a [[nostr-community|kind 10222]] event. The pubkey of this key pair becomes the unique identifier for that community. One key pair can only represent one community.&lt;br/&gt;&lt;br/&gt;The community&#39;s name, picture, and description are derived from the pubkey&#39;s [[nostr-profile|kind 0]] metadata event.&lt;br/&gt;&lt;br/&gt;```json&lt;br/&gt;{&lt;br/&gt;  &#34;id&#34;: &#34;&lt;event-id&gt;&#34;,&lt;br/&gt;  &#34;pubkey&#34;: &#34;&lt;community-pubkey&gt;&#34;,&lt;br/&gt;  &#34;created_at&#34;: 1675642635,&lt;br/&gt;  &#34;kind&#34;: 10222,&lt;br/&gt;  &#34;tags&#34;: [&lt;br/&gt;    // at least one main relay for the community &#43; other optional backup relays&lt;br/&gt;    // optional &#34;enforced&#34; = relay only stores events with this community&#39;s h tag from profile-list members&lt;br/&gt;    [&#34;r&#34;, &#34;&lt;relay-url&gt;&#34;, &#34;enforced&#34;],&lt;br/&gt;    [&#34;r&#34;, &#34;&lt;relay-url&gt;&#34;],&lt;br/&gt;    // one or more blossom servers&lt;br/&gt;    [&#34;blossom&#34;, &#34;&lt;blossom-url&gt;&#34;],&lt;br/&gt;&lt;br/&gt;    // one or more ecash mints&lt;br/&gt;    [&#34;mint&#34;, &#34;&lt;mint-url&gt;&#34;, &#34;cashu&#34;],&lt;br/&gt;&lt;br/&gt;    // optional other server/infrastructure (one tag name per service type, value = URL)&lt;br/&gt;    [&#34;livekit&#34;, &#34;&lt;livekit-server-url&gt;&#34;],&lt;br/&gt;    // future: other tags e.g. [&#34;&lt;service-type&gt;&#34;, &#34;&lt;url&gt;&#34;] as needed&lt;br/&gt;&lt;br/&gt;    // Interactions section for comments, reactions, and labels (recommended for all communities)&lt;br/&gt;    [&#34;content&#34;, &#34;Interactions&#34;],&lt;br/&gt;    [&#34;k&#34;, &#34;1111&#34;], // comments&lt;br/&gt;    [&#34;k&#34;, &#34;7&#34;],    // reactions&lt;br/&gt;    [&#34;k&#34;, &#34;1985&#34;], // labels&lt;br/&gt;    [&#34;a&#34;, &#34;30000:&lt;pubkey&gt;:Interactions&#34;, &#34;&lt;relay-url&gt;&#34;], // profile list&lt;br/&gt;&lt;br/&gt;    // one or more content sections for publishing&lt;br/&gt;    [&#34;content&#34;, &#34;Chat&#34;],&lt;br/&gt;    [&#34;k&#34;, &#34;9&#34;],&lt;br/&gt;    [&#34;a&#34;, &#34;30000:&lt;pubkey&gt;:Chat&#34;, &#34;&lt;relay-url&gt;&#34;], // profile list&lt;br/&gt;&lt;br/&gt;    [&#34;content&#34;, &#34;Forum&#34;],&lt;br/&gt;    [&#34;k&#34;, &#34;11&#34;],&lt;br/&gt;    [&#34;a&#34;, &#34;30000:&lt;pubkey&gt;:Forum&#34;, &#34;&lt;relay-url&gt;&#34;], // profile list&lt;br/&gt;&lt;br/&gt;    [&#34;content&#34;, &#34;Apps&#34;],&lt;br/&gt;    [&#34;k&#34;, &#34;32267&#34;], // apps&lt;br/&gt;    [&#34;k&#34;, &#34;30063&#34;], // releases&lt;br/&gt;    [&#34;a&#34;, &#34;30000:&lt;pubkey&gt;:Apps&#34;, &#34;&lt;relay-url&gt;&#34;], // profile list&lt;br/&gt;&lt;br/&gt;    // Optional terms of service, points to another event&lt;br/&gt;    [&#34;tos&#34;, &#34;&lt;event-id-or-address&gt;&#34;, &#34;&lt;relay-url&gt;&#34;],&lt;br/&gt;&lt;br/&gt;    // Optional location&lt;br/&gt;    [&#34;location&#34;, &#34;&lt;location&gt;&#34;],&lt;br/&gt;    [&#34;g&#34;, &#34;&lt;geo-hash&gt;&#34;],&lt;br/&gt;&lt;br/&gt;    // Optional language(s) — repeat for multilingual communities&lt;br/&gt;    [&#34;l&#34;, &#34;en&#34;, &#34;ISO-639-1&#34;]&lt;br/&gt;  ],&lt;br/&gt;  &#34;content&#34;: &#34;&#34;,&lt;br/&gt;  &#34;sig&#34;: &#34;&lt;signature&gt;&#34;&lt;br/&gt;}&lt;br/&gt;```&lt;br/&gt;&lt;br/&gt;## Tag definitions&lt;br/&gt;&lt;br/&gt;| Tag | Description |&lt;br/&gt;|-----|-------------|&lt;br/&gt;| `r` | Relay URLs for community content. First is main relay. Optional second value `enforced`: this relay only stores events that have this community&#39;s pubkey in an `h` tag and whose author is in the relevant profile list for that event&#39;s kind; clients can trust that all such events on this relay are from list members. |&lt;br/&gt;| `blossom` | Blossom server URLs. |&lt;br/&gt;| `mint` | Mint URL for token/payment features. |&lt;br/&gt;| `livekit` | LiveKit server URL for real-time audio/video. |&lt;br/&gt;| *other* | Communities MAY use additional tags for other server-side services; tag name = service type, first value = URL. Clients SHOULD ignore unknown tags. |&lt;br/&gt;| `content` | Name of content section (e.g., &#34;Chat&#34;, &#34;Forum&#34;). |&lt;br/&gt;| `k` | Event kind allowed in this section. |&lt;br/&gt;| `a` | Profile list reference: `30000:&lt;pubkey&gt;:&lt;d-tag&gt;`. Contains member pubkeys and metadata. |&lt;br/&gt;| `retention` | Retention policy: [kind, value, type]. Type is &#34;time&#34; (seconds) or &#34;count&#34;. |&lt;br/&gt;| `tos` | Reference to posting policy event. |&lt;br/&gt;| `location` | Community location. |&lt;br/&gt;| `g` | Geo hash. |&lt;br/&gt;| `l` | Language tag: ISO-639-1 code (e.g. `&#34;en&#34;`), mark MUST be `&#34;ISO-639-1&#34;`. Repeat for multilingual communities. |&lt;br/&gt;&lt;br/&gt;The `a` tag within a content section references a profile list ([[nostr-list|kind 30000]]) that contains all member pubkeys (`p` tags) who can publish to this section. The profile list also contains membership metadata (name, image) and an optional `form` tag (NIP form reference or web URL) for requesting membership. See [Profile List Metadata](#profile-list-metadata) below.&lt;br/&gt;&lt;br/&gt;The pubkey of the key pair that creates this event serves as the unique identifier for the community. This means:&lt;br/&gt;&lt;br/&gt;1. Each key pair can only represent one community&lt;br/&gt;2. Communities can be easily discovered by querying for the most recent [[nostr-community|kind 10222]] event for a given pubkey&lt;br/&gt;3. Community managers can update their settings by publishing a new [[nostr-community|kind 10222]] event&lt;br/&gt;&lt;br/&gt;# Profile Lists&lt;br/&gt;&lt;br/&gt;Each content section references a [[nostr-profile-list|profile list]] ([[nostr-list|kind 30000]]) that controls who can publish to that section. The `a` tag within a content section points to the list by `30000:&lt;pubkey&gt;:&lt;d-tag&gt;`. The whitelist is simply the set of `p` tags in that list — a pubkey is allowed if it appears there.&lt;br/&gt;&lt;br/&gt;## Access Requests&lt;br/&gt;&lt;br/&gt;A profile list MAY include a `form` tag pointing to a [[nostr-form|Form]] template (`30168:&lt;pubkey&gt;:&lt;form-id&gt;`) or a plain web URL. This is the community&#39;s public intake channel:&lt;br/&gt;&lt;br/&gt;1. A prospective contributor fetches the form template and submits a form response (kind:1069)&lt;br/&gt;2. The community admin reviews the response and, if approved, adds the pubkey as a `p` tag to the profile list&lt;br/&gt;3. That pubkey can now publish to that section — no separate approval event needed&lt;br/&gt;&lt;br/&gt;Communities may choose to automate this flow by managing the list with an on-server hot-key that instantly adds/removes profiles based on responses.&lt;br/&gt;&lt;br/&gt;Apps targeting a specific community may bypass the form entirely and provide their own UX; with the `form` tag as a fallback for interoperabilty.&lt;br/&gt;&lt;br/&gt;## Multiple Tiers&lt;br/&gt;&lt;br/&gt;Different content sections can reference different profile lists, creating natural access tiers. A community might require a separate application to publish apps while letting any approved pubkey post in chat. Each list carries its own display name, badge image, and description — see [[nostr-profile-list|Profile List]] for the full spec.&lt;br/&gt;&lt;br/&gt;# Targeting publications at communities&lt;br/&gt;&lt;br/&gt;Publications target communities via **one or more `h` tags** on the event. Each `h` tag value is a community pubkey. This keeps the model simple and works with replaceable events (one per kind&#43;pubkey or kind&#43;pubkey&#43;d).&lt;br/&gt;&lt;br/&gt;- **Forum** [[nostr-community|kind 11]] and **Chat** [[nostr-community|kind 9]] are exclusive to a single community: use exactly one `h` tag with that community&#39;s pubkey.&lt;br/&gt;- **Other publications** (e.g. kind 32267, articles, etc.) may use **multiple `h` tags** to target several communities simultaneously; clients filter by these tags when listing content.&lt;br/&gt;- **Comments, reactions, and zaps** carry no `h` tag of their own — they just reference the h-tagged event they interact with.&lt;br/&gt;&lt;br/&gt;Anyone can zap community content regardless of whitelist status. Query zap receipts on the community relays with no author filtering — external appreciation is always welcome.&lt;br/&gt;&lt;br/&gt;# Community-Exclusive Publications&lt;br/&gt;&lt;br/&gt;Chat messages [[nostr-community|kind 9]] and Forum posts [[nostr-community|kind 11]] are exclusive by default. They can only belong to one community and cannot be targeted to multiple communities. They use a single `h` tag to reference their community directly.&lt;br/&gt;&lt;br/&gt;For chat messages within a community, users should use [[nostr-community|kind 9]] events with a community tag:&lt;br/&gt;&lt;br/&gt;```json&lt;br/&gt;{&lt;br/&gt;  &#34;id&#34;: &#34;&lt;event-id&gt;&#34;,&lt;br/&gt;  &#34;pubkey&#34;: &#34;&lt;pubkey&gt;&#34;,&lt;br/&gt;  &#34;created_at&#34;: 1675642635,&lt;br/&gt;  &#34;kind&#34;: 9,&lt;br/&gt;  &#34;tags&#34;: [&lt;br/&gt;    [&#34;h&#34;, &#34;&lt;community-pubkey&gt;&#34;]&lt;br/&gt;  ],&lt;br/&gt;  &#34;content&#34;: &#34;&lt;message&gt;&#34;,&lt;br/&gt;  &#34;sig&#34;: &#34;&lt;signature&gt;&#34;&lt;br/&gt;}&lt;br/&gt;```&lt;br/&gt;&lt;br/&gt;The same pattern applies to Forum posts, see [[nostr-community|kind 11]].&lt;br/&gt;&lt;br/&gt;# Requesting from relays&lt;br/&gt;&lt;br/&gt;When reading community content, request events (with the community&#39;s `h` tag) from the relays listed in the community&#39;s definition. Relays marked with `enforced` only store events from profile list members for that community, so results need no extra client-side filtering. Relays without `enforced` may store any author; the client must filter by the profile list(s) to show only list members.&lt;br/&gt;&lt;br/&gt;# Common Content Sections&lt;br/&gt;&lt;br/&gt;Communities can define any mix of content sections. Some sections bundle event kinds that naturally belong together. Below are standard configurations.&lt;br/&gt;&lt;br/&gt;## Activity&lt;br/&gt;&lt;br/&gt;Recommended for all communities. Covers all forms of activity on community content: reactions, comments, reposts, labels, and reports.&lt;br/&gt;&lt;br/&gt;| Kind | Description |&lt;br/&gt;|------|-------------|&lt;br/&gt;| kind:7 | Reactions |&lt;br/&gt;| kind:1111 | Comments |&lt;br/&gt;| kind:6 | Reposts |&lt;br/&gt;| kind:16 | Generic Reposts |&lt;br/&gt;| kind:1985 | Labels |&lt;br/&gt;| kind:1984 | Reports |&lt;br/&gt;&lt;br/&gt;Reposts (kind:6, kind:16) allow community members to bring any existing publication — including content authored outside the community — into the community&#39;s feed without needing to be the original author.&lt;br/&gt;&lt;br/&gt;Labels (kind:1985) can also function as a categorized repost: a member targets a label event at the community&#39;s relay to surface and tag external content under a community-defined category without republishing the original event or requiring authorship.&lt;br/&gt;&lt;br/&gt;When a publication targets multiple communities, members from all those communities participate together: filter by the Activity section&#39;s profile list from each targeted community. Members meet in one shared discussion around the publication — no duplicates, no fragmented conversations across multiple places.&lt;br/&gt;&lt;br/&gt;Communities that don&#39;t want to be part of discussions with certain other communities can simply not accept those events.&lt;br/&gt;&lt;br/&gt;## Projects&lt;br/&gt;&lt;br/&gt;For project planning and tracking.&lt;br/&gt;&lt;br/&gt;| Kind | Description |&lt;br/&gt;|------|-------------|&lt;br/&gt;| kind:30315 | Projects |&lt;br/&gt;| kind:30316 | Milestones |&lt;br/&gt;&lt;br/&gt;## Apps&lt;br/&gt;&lt;br/&gt;For app and release publishing.&lt;br/&gt;&lt;br/&gt;| Kind | Description |&lt;br/&gt;|------|-------------|&lt;br/&gt;| kind:32267 | Apps |&lt;br/&gt;| kind:30063 | Releases |&lt;br/&gt;&lt;br/&gt;## Forum&lt;br/&gt;&lt;br/&gt;For threaded discussion. Uses [[nostr-community|kind 11]] posts, each targeting the community via a single `h` tag. Forum posts are exclusive to one community and cannot be targeted at multiple communities simultaneously.&lt;br/&gt;&lt;br/&gt;## Chat&lt;br/&gt;&lt;br/&gt;For real-time messaging. Uses [[nostr-community|kind 9]] messages, each targeting the community via a single `h` tag. Chat messages are exclusive to one community and cannot be targeted at multiple communities simultaneously.&lt;br/&gt;&lt;br/&gt;# Listing a User&#39;s Communities&lt;br/&gt;&lt;br/&gt;Since communities are just pubkeys, existing Nostr primitives (like profile lists) can be used to list which communities a user is part of.&lt;br/&gt;&lt;br/&gt;# Pinned Content&lt;br/&gt;&lt;br/&gt;Communities can also publish a [[nostr-pin|kind 10001]] pin list like any other profile. This gives communities a built-in way to feature content — pinned articles, apps, releases, or any other event — without any additional spec. Clients that display pinned events on profiles will automatically show them for communities too.&lt;br/&gt;&lt;br/&gt;# Implementation Notes&lt;br/&gt;&lt;br/&gt;Communities work on **any standard Nostr relay**. Access control may be enforced client-side only, or optionally by relays that the community marks with `enforced` on the `r` tag.&lt;br/&gt;&lt;br/&gt;**Client filtering workflow:**&lt;br/&gt;&lt;br/&gt;1. Fetch the community&#39;s [[nostr-community|kind 10222]] event to get content sections and which relays (if any) are `enforced`&lt;br/&gt;2. Fetch the profile list [[nostr-list|kind 30000]] for each section to get allowed pubkeys&lt;br/&gt;3. Query for events targeting the community (via `h` tag). When reading from an `enforced` relay, events are already restricted to profile list members; otherwise filter by the member pubkeys using the `authors` filter&lt;br/&gt;&lt;br/&gt;**Media fallback:**&lt;br/&gt;&lt;br/&gt;Community blossom servers SHOULD back up all media files referenced in community publications — even when the original URLs point to different servers. By storing files by their content hash, the community server becomes a reliable fallback when external URLs suffer link rot. Clients can try the community&#39;s blossom server when the original media URL fails.&lt;br/&gt;&lt;br/&gt;**Additional recommendations:**&lt;br/&gt;&lt;br/&gt;- Clients MAY cache community metadata and profile lists to reduce relay queries&lt;br/&gt;- Clients SHOULD check membership before attempting to publish&lt;br/&gt;- Relays MAY optionally enforce profile list membership (and then list themselves with `enforced` in the community&#39;s `r` tag); otherwise clients filter by membership. Relays MAY implement retention policies; this is not required.&lt;br/&gt;&lt;br/&gt;# Benefits&lt;br/&gt;&lt;br/&gt;1. No special relay required — works on any standard Nostr relay&lt;br/&gt;2. Easy onboarding — new users don&#39;t need to set up any personal relay or media server to join Nostr via a community. They can use the community&#39;s relay and blossom server immediately.&lt;br/&gt;3. Any existing npub can become a community&lt;br/&gt;4. Most existing publications can be targeted at communities (backwards compatible)&lt;br/&gt;5. Communities are not permanently tied to specific relays&lt;br/&gt;6. Communities can define their own content types with membership-based access control&lt;br/&gt;7. Cross-community interaction via multi-community `h` tags on publications&lt;br/&gt;8. Users can request access by submitting Form Responses&lt;br/&gt;9. Simple membership management — just add/remove `p` tags in the membership list &lt;/blockquote&gt;&lt;br/&gt;It is actually quite pleasant to work with it. Just using it for totally open stuff right now. the more private stuff might be a bit harder
    </content>
    <updated>2026-03-27T08:33:25Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqqqy3l70lzurzhe6pv79zrxel0ry60luyn6u3yf5tfuetkmpyywcpz3mhxue69uhksctkv4hzumrpda3ju7re0gpzq8zl7092ekzzcqwu4rehsgcmzesh29kjznd8t3aw4wlfu8h7ns8kwpxxft</id>
    
      <title>Nostr event nevent1qqsqqqy3l70lzurzhe6pv79zrxel0ry60luyn6u3yf5tfuetkmpyywcpz3mhxue69uhksctkv4hzumrpda3ju7re0gpzq8zl7092ekzzcqwu4rehsgcmzesh29kjznd8t3aw4wlfu8h7ns8kwpxxft</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqqqy3l70lzurzhe6pv79zrxel0ry60luyn6u3yf5tfuetkmpyywcpz3mhxue69uhksctkv4hzumrpda3ju7re0gpzq8zl7092ekzzcqwu4rehsgcmzesh29kjznd8t3aw4wlfu8h7ns8kwpxxft" />
    <content type="html">
      GM Nostr Family
    </content>
    <updated>2026-03-10T07:39:39Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsztzzy8cw9ls76u07s66ac574ljkmsfjv58tszfhgr3shlf9xkwncpz3mhxue69uhksctkv4hzumrpda3ju7re0gpzq8zl7092ekzzcqwu4rehsgcmzesh29kjznd8t3aw4wlfu8h7ns8kt3ztma</id>
    
      <title type="html">GM https://i.imgflip.com/am07mh.jpg</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsztzzy8cw9ls76u07s66ac574ljkmsfjv58tszfhgr3shlf9xkwncpz3mhxue69uhksctkv4hzumrpda3ju7re0gpzq8zl7092ekzzcqwu4rehsgcmzesh29kjznd8t3aw4wlfu8h7ns8kt3ztma" />
    <content type="html">
      GM&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://i.imgflip.com/am07mh.jpg&#34;&gt; 
    </content>
    <updated>2026-03-07T08:37:37Z</updated>
  </entry>

</feed>