<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Marcel Bruckner · Blog</title><description>Notes on what I build: AI tools, Trilium, self-hosting and my homelab.</description><link>https://marcelbruckner.de/</link><item><title>trilium-recall 0.7.0</title><link>https://marcelbruckner.de/blog/trilium-recall-0-7-0/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/trilium-recall-0-7-0/</guid><description>passageway searches Trilium, Confluence and Wikipedia, and you can add other sources. To switch, install it in Claude Code:</description><pubDate>Fri, 30 Oct 2026 19:03:59 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;trilium-recall is superseded by passageway and no longer developed.&lt;/strong&gt; Switch to passageway: it does what trilium-recall did, and more.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;passageway searches Trilium, Confluence and Wikipedia, and you can add other sources. To switch, install it in Claude Code:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-dimmed&quot; style=&quot;background-color:#22272e;color:#adbac7; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin marketplace add Marceltov/passageway&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The guide explains how: &lt;a href=&quot;https://trilium-recall.marceltov.de/migrate/&quot;&gt;https://trilium-recall.marceltov.de/migrate/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This last release only marks the switch. The &lt;code&gt;ghcr.io/marceltov/trilium-recall:0.7.0&lt;/code&gt; image still works, but it gets no more fixes.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/Marceltov/trilium-recall/releases/tag/v0.7.0&quot;&gt;The release on GitHub&lt;/a&gt;&lt;/p&gt;
</content:encoded><category>release</category><category>trilium-recall</category><category>trilium-recall-v0.7.0</category></item><item><title>freundebuch 0.7.0</title><link>https://marcelbruckner.de/blog/freundebuch-0-7-0/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/freundebuch-0-7-0/</guid><description>The release on GitHub</description><pubDate>Fri, 30 Oct 2026 15:53:28 GMT</pubDate><content:encoded>&lt;h2 id=&quot;whats-changed&quot;&gt;What’s Changed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;FREUNDEBUCH #78: Places that nest, have an address and can be someone’s home by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/92&quot;&gt;https://github.com/Marceltov/freundebuch/pull/92&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH: The roadmap as a timeline, with what shipped by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/94&quot;&gt;https://github.com/Marceltov/freundebuch/pull/94&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH: A new app icon, and the docs in the app’s look by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/95&quot;&gt;https://github.com/Marceltov/freundebuch/pull/95&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a href=&quot;https://github.com/Marceltov/freundebuch/compare/v0.6.0...v0.7.0&quot;&gt;https://github.com/Marceltov/freundebuch/compare/v0.6.0...v0.7.0&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;image&quot;&gt;Image&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark-dimmed&quot; style=&quot;background-color:#22272e;color:#adbac7; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F69D50&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt; pull&lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt; ghcr.io/marceltov/freundebuch:0.7.0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/Marceltov/freundebuch/releases/tag/v0.7.0&quot;&gt;The release on GitHub&lt;/a&gt;&lt;/p&gt;
</content:encoded><category>release</category><category>v0.7.0</category></item><item><title>freundebuch 0.6.0</title><link>https://marcelbruckner.de/blog/freundebuch-0-6-0/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/freundebuch-0-6-0/</guid><description>The release on GitHub</description><pubDate>Fri, 30 Oct 2026 09:44:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;whats-changed&quot;&gt;What’s Changed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;FREUNDEBUCH #68: A ready-made iPhone Shortcut, HEIC on the server, several files worked through together by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/88&quot;&gt;https://github.com/Marceltov/freundebuch/pull/88&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH #89: The Shortcut’s name and icon, how to share, and #68’s leftovers by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/90&quot;&gt;https://github.com/Marceltov/freundebuch/pull/90&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH: Einstellungen set up the iPhone in three numbered steps by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/91&quot;&gt;https://github.com/Marceltov/freundebuch/pull/91&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a href=&quot;https://github.com/Marceltov/freundebuch/compare/v0.5.1...v0.6.0&quot;&gt;https://github.com/Marceltov/freundebuch/compare/v0.5.1...v0.6.0&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;image&quot;&gt;Image&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark-dimmed&quot; style=&quot;background-color:#22272e;color:#adbac7; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F69D50&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt; pull&lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt; ghcr.io/marceltov/freundebuch:0.6.0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/Marceltov/freundebuch/releases/tag/v0.6.0&quot;&gt;The release on GitHub&lt;/a&gt;&lt;/p&gt;
</content:encoded><category>release</category><category>v0.6.0</category></item><item><title>freundebuch 0.5.1</title><link>https://marcelbruckner.de/blog/freundebuch-0-5-1/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/freundebuch-0-5-1/</guid><description>The release on GitHub</description><pubDate>Fri, 30 Oct 2026 06:54:58 GMT</pubDate><content:encoded>&lt;h2 id=&quot;whats-changed&quot;&gt;What’s Changed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;FREUNDEBUCH #80: Daily reminders log only on the tick that served someone by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/81&quot;&gt;https://github.com/Marceltov/freundebuch/pull/81&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH #82: The chat holds the page still and stays in view above the iPhone keyboard by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/83&quot;&gt;https://github.com/Marceltov/freundebuch/pull/83&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH #82: A drag in the chat can’t pan the iPhone screen away by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/84&quot;&gt;https://github.com/Marceltov/freundebuch/pull/84&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH #82: The chat fits above the keyboard when Safari pans down to the field by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/85&quot;&gt;https://github.com/Marceltov/freundebuch/pull/85&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH #86: The chat field is one line again after sending by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/87&quot;&gt;https://github.com/Marceltov/freundebuch/pull/87&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a href=&quot;https://github.com/Marceltov/freundebuch/compare/v0.5.0...v0.5.1&quot;&gt;https://github.com/Marceltov/freundebuch/compare/v0.5.0...v0.5.1&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;image&quot;&gt;Image&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark-dimmed&quot; style=&quot;background-color:#22272e;color:#adbac7; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F69D50&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt; pull&lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt; ghcr.io/marceltov/freundebuch:0.5.1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/Marceltov/freundebuch/releases/tag/v0.5.1&quot;&gt;The release on GitHub&lt;/a&gt;&lt;/p&gt;
</content:encoded><category>release</category><category>v0.5.1</category></item><item><title>freundebuch 0.5.0</title><link>https://marcelbruckner.de/blog/freundebuch-0-5-0/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/freundebuch-0-5-0/</guid><description>The release on GitHub</description><pubDate>Thu, 29 Oct 2026 19:29:47 GMT</pubDate><content:encoded>&lt;h2 id=&quot;whats-changed&quot;&gt;What’s Changed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;FREUNDEBUCH #76: Prüfen shows the file in the chat and dates by the day it was shared by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/77&quot;&gt;https://github.com/Marceltov/freundebuch/pull/77&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH #67: Experiences, series and places by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/79&quot;&gt;https://github.com/Marceltov/freundebuch/pull/79&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a href=&quot;https://github.com/Marceltov/freundebuch/compare/v0.4.0...v0.5.0&quot;&gt;https://github.com/Marceltov/freundebuch/compare/v0.4.0...v0.5.0&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;image&quot;&gt;Image&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark-dimmed&quot; style=&quot;background-color:#22272e;color:#adbac7; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F69D50&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt; pull&lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt; ghcr.io/marceltov/freundebuch:0.5.0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/Marceltov/freundebuch/releases/tag/v0.5.0&quot;&gt;The release on GitHub&lt;/a&gt;&lt;/p&gt;
</content:encoded><category>release</category><category>v0.5.0</category></item><item><title>notefeed 0.34.0: the operator can remove a single post</title><link>https://marcelbruckner.de/blog/notefeed-0-34-0/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/notefeed-0-34-0/</guid><description>notefeed 0.34.0 is out.</description><pubDate>Thu, 29 Oct 2026 16:10:46 GMT</pubDate><content:encoded>&lt;p&gt;notefeed 0.34.0 is out.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The operator can now remove one post that breaks the content rules instead of taking down the whole feed. The note goes, along with the text it was posted with and every picture posted with that text. In its place the feed shows a mark: “Removed by the operator: this broke the content rules of this instance.”, linked to the terms page. Whoever can post to the feed can delete the mark, but the post does not come back. Links to a removed note answer 410 (&lt;code&gt;removed&lt;/code&gt;), also after the mark is deleted. In the API and client packages the mark is a note with &lt;code&gt;removed: true&lt;/code&gt; and no content.&lt;/li&gt;
&lt;li&gt;Every note now counts against a feed’s limits: texts, pictures and marks alike. On a free feed, a feed that kept pictures after its license ran out drops its oldest notes sooner.&lt;/li&gt;
&lt;li&gt;AI assistants now see which notes are the operator’s marks: &lt;code&gt;list_notes&lt;/code&gt; and &lt;code&gt;get_note&lt;/code&gt; show them with &lt;code&gt;removed: true&lt;/code&gt;, &lt;code&gt;get_note&lt;/code&gt; and &lt;code&gt;edit_note&lt;/code&gt; refuse a removed note, and &lt;code&gt;delete_note&lt;/code&gt; deletes a mark. Assistants see the changed tools only after reconnecting. In Claude, start a new chat, or remove and add the notefeed connector if they still do not show. In Claude Code, restart it.&lt;/li&gt;
&lt;li&gt;Breaking: if you run notefeed yourself with &lt;code&gt;NOTEFEED_MAX_NOTES_PER_FEED&lt;/code&gt; set, it now counts pictures as well as text notes, so a feed with many pictures reaches the limit sooner and further posts answer 507 (&lt;code&gt;note_limit&lt;/code&gt;). Raise the value if that matters to you. &lt;code&gt;NOTEFEED_MAX_IMAGES_PER_FEED&lt;/code&gt; still limits pictures on their own.&lt;/li&gt;
&lt;li&gt;If you run notefeed yourself on SQLite or PostgreSQL, back up your data before upgrading: the first start adds a table.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All the details are in the &lt;a href=&quot;https://notefeed.me/r/releases/mjh8bUIVm79HiA6HWXehVg&quot;&gt;release notes&lt;/a&gt; and &lt;a href=&quot;https://github.com/notefeed/notefeed/releases/tag/v0.34.0&quot;&gt;on GitHub&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>release</category><category>v0.34.0</category></item><item><title>freundebuch 0.4.0</title><link>https://marcelbruckner.de/blog/freundebuch-0-4-0/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/freundebuch-0-4-0/</guid><description>The release on GitHub</description><pubDate>Thu, 29 Oct 2026 15:32:01 GMT</pubDate><content:encoded>&lt;h2 id=&quot;whats-changed&quot;&gt;What’s Changed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;FREUNDEBUCH #59: Prüfen: share any file, work it through with Claude, keep only its transcript by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/60&quot;&gt;https://github.com/Marceltov/freundebuch/pull/60&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH #61: What freundebuch stands for by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/62&quot;&gt;https://github.com/Marceltov/freundebuch/pull/62&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH #63: Small fixes after Prüfen by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/65&quot;&gt;https://github.com/Marceltov/freundebuch/pull/65&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH #64: Where freundebuch is going by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/74&quot;&gt;https://github.com/Marceltov/freundebuch/pull/74&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH #66: A journal, and the ramble as its own record by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/75&quot;&gt;https://github.com/Marceltov/freundebuch/pull/75&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a href=&quot;https://github.com/Marceltov/freundebuch/compare/v0.3.0...v0.4.0&quot;&gt;https://github.com/Marceltov/freundebuch/compare/v0.3.0...v0.4.0&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;image&quot;&gt;Image&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark-dimmed&quot; style=&quot;background-color:#22272e;color:#adbac7; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F69D50&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt; pull&lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt; ghcr.io/marceltov/freundebuch:0.4.0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/Marceltov/freundebuch/releases/tag/v0.4.0&quot;&gt;The release on GitHub&lt;/a&gt;&lt;/p&gt;
</content:encoded><category>release</category><category>v0.4.0</category></item><item><title>freundebuch 0.3.0</title><link>https://marcelbruckner.de/blog/freundebuch-0-3-0/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/freundebuch-0-3-0/</guid><description>The release on GitHub</description><pubDate>Wed, 28 Oct 2026 22:58:12 GMT</pubDate><content:encoded>&lt;h2 id=&quot;whats-changed&quot;&gt;What’s Changed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;FREUNDEBUCH #50: List people, find who is in no group, and Haushalt by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/51&quot;&gt;https://github.com/Marceltov/freundebuch/pull/51&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH #52: Share any page or entry as a link by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/53&quot;&gt;https://github.com/Marceltov/freundebuch/pull/53&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH #47: Log why a screenshot couldn’t be read by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/56&quot;&gt;https://github.com/Marceltov/freundebuch/pull/56&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH #54: Keep the top bar still and pull down to refresh by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/55&quot;&gt;https://github.com/Marceltov/freundebuch/pull/55&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH #47: Ask for the screenshot report instead of forcing it by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/57&quot;&gt;https://github.com/Marceltov/freundebuch/pull/57&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a href=&quot;https://github.com/Marceltov/freundebuch/compare/v0.2.0...v0.3.0&quot;&gt;https://github.com/Marceltov/freundebuch/compare/v0.2.0...v0.3.0&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;image&quot;&gt;Image&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark-dimmed&quot; style=&quot;background-color:#22272e;color:#adbac7; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F69D50&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt; pull&lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt; ghcr.io/marceltov/freundebuch:0.3.0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/Marceltov/freundebuch/releases/tag/v0.3.0&quot;&gt;The release on GitHub&lt;/a&gt;&lt;/p&gt;
</content:encoded><category>release</category><category>v0.3.0</category></item><item><title>freundebuch 0.2.0</title><link>https://marcelbruckner.de/blog/freundebuch-0-2-0/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/freundebuch-0-2-0/</guid><description>The release on GitHub</description><pubDate>Wed, 28 Oct 2026 21:47:56 GMT</pubDate><content:encoded>&lt;h2 id=&quot;whats-changed&quot;&gt;What’s Changed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;FREUNDEBUCH #46: Personal traits: needs and personality by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/48&quot;&gt;https://github.com/Marceltov/freundebuch/pull/48&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a href=&quot;https://github.com/Marceltov/freundebuch/compare/v0.1.0...v0.2.0&quot;&gt;https://github.com/Marceltov/freundebuch/compare/v0.1.0...v0.2.0&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;image&quot;&gt;Image&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark-dimmed&quot; style=&quot;background-color:#22272e;color:#adbac7; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F69D50&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt; pull&lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt; ghcr.io/marceltov/freundebuch:0.2.0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/Marceltov/freundebuch/releases/tag/v0.2.0&quot;&gt;The release on GitHub&lt;/a&gt;&lt;/p&gt;
</content:encoded><category>release</category><category>v0.2.0</category></item><item><title>notefeed 0.33.1: no report link on drafts</title><link>https://marcelbruckner.de/blog/notefeed-0-33-1/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/notefeed-0-33-1/</guid><description>notefeed 0.33.1 is out.</description><pubDate>Wed, 28 Oct 2026 21:39:59 GMT</pubDate><content:encoded>&lt;p&gt;notefeed 0.33.1 is out.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Drafts and scheduled notes no longer show a Report link. No reader can see them, so there is nothing to report, and whoever does see one can remove it. A note gets its Report link once readers see it. On notefeed.me the terms, privacy page and imprint now say the link is on every published note.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All the details are in the &lt;a href=&quot;https://notefeed.me/r/releases/rM_QmP2qgJyX6KY1Hnx50g&quot;&gt;release notes&lt;/a&gt; and &lt;a href=&quot;https://github.com/notefeed/notefeed/releases/tag/v0.33.1&quot;&gt;on GitHub&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>release</category><category>v0.33.1</category></item><item><title>notefeed 0.33.0: drafts</title><link>https://marcelbruckner.de/blog/notefeed-0-33-0/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/notefeed-0-33-0/</guid><description>notefeed 0.33.0 is out.</description><pubDate>Wed, 28 Oct 2026 20:51:09 GMT</pubDate><content:encoded>&lt;p&gt;notefeed 0.33.0 is out.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A note can now be a draft. Whoever can post to the feed sees it on the feed page, marked as a draft, and edits it like any other note. Readers do not see it on the read link, in RSS or in the read API, and neither do they see its pictures. Publishing keeps its id, links and date, so a draft dated in the past takes its place there and one dated in the future becomes a scheduled note. A published note can be made a draft again. In the web app, tick Draft in the compose box or in a note’s edit form. Scripts send &lt;code&gt;X-Note-Draft: true&lt;/code&gt; on a post or &lt;code&gt;draft&lt;/code&gt; in a PATCH, the client packages take &lt;code&gt;draft&lt;/code&gt;, and the CLI has &lt;code&gt;notefeed post --draft&lt;/code&gt; and &lt;code&gt;notefeed update --draft&lt;/code&gt; / &lt;code&gt;--publish&lt;/code&gt;. A draft picture cannot be the feed’s title image.&lt;/li&gt;
&lt;li&gt;The post-to-notefeed skill asks where you want your drafts: in the conversation, on the feed itself, or in a second feed whose read link you can send to a reviewer.&lt;/li&gt;
&lt;li&gt;The report form now offers an optional name beside the optional e-mail address, and asks you to confirm that you report in good faith, as the EU’s Digital Services Act requires.&lt;/li&gt;
&lt;li&gt;AI assistants can now post notes and files as drafts with &lt;code&gt;post_note&lt;/code&gt; and &lt;code&gt;post_file&lt;/code&gt;, and publish a draft or hide a note again with &lt;code&gt;edit_note&lt;/code&gt;. &lt;code&gt;list_notes&lt;/code&gt; and &lt;code&gt;get_note&lt;/code&gt; show which notes are drafts. Assistants see the changed tools only after reconnecting. In Claude, start a new chat, or remove and add the notefeed connector if they still do not show. In Claude Code, restart it.&lt;/li&gt;
&lt;li&gt;If you run notefeed yourself on SQLite or PostgreSQL, back up your data before upgrading: the first start adds a column to the notes table and rebuilds its index.&lt;/li&gt;
&lt;li&gt;If you run notefeed yourself with &lt;code&gt;NOTEFEED_REPORT_ENDPOINT&lt;/code&gt; set, the report page now also sends the fields &lt;code&gt;name&lt;/code&gt; and &lt;code&gt;good_faith&lt;/code&gt;. If your inbox refuses fields it does not know, add these two before upgrading.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All the details are in the &lt;a href=&quot;https://notefeed.me/r/releases/FOcgYrzJJ7eGayIScj85FQ&quot;&gt;release notes&lt;/a&gt; and &lt;a href=&quot;https://github.com/notefeed/notefeed/releases/tag/v0.33.0&quot;&gt;on GitHub&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>release</category><category>v0.33.0</category></item><item><title>notefeed 0.32.0: a license key no longer opens your purchase details</title><link>https://marcelbruckner.de/blog/notefeed-0-32-0/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/notefeed-0-32-0/</guid><description>notefeed 0.32.0 is out.</description><pubDate>Wed, 28 Oct 2026 19:23:01 GMT</pubDate><content:encoded>&lt;p&gt;notefeed 0.32.0 is out.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A license key no longer opens the payment provider’s page with your purchases. That page shows the buyer’s e-mail address, payment method, invoices and every license they bought with its key, so a key given to a co-author or put into a script could reach all of that. To cancel, change the payment method or get invoices, sign in at &lt;a href=&quot;https://creem.io/my-orders/login&quot;&gt;https://creem.io/my-orders/login&lt;/a&gt; with the e-mail address you bought with, or use the link in your receipt. The license page links there under “Manage your purchases” and no longer asks for a key.&lt;/li&gt;
&lt;li&gt;Scripts can ask what licenses cost, where to buy one and where buyers manage them, with &lt;code&gt;GET /api/v1/licenses&lt;/code&gt; or &lt;code&gt;licenses()&lt;/code&gt; in both client packages.&lt;/li&gt;
&lt;li&gt;AI assistants can now look up the license plans, where to buy a license and where to manage a purchase with the new tool &lt;code&gt;get_licenses&lt;/code&gt;. Assistants see the new tool only after reconnecting. In Claude, start a new chat, or remove and add the notefeed connector if it still does not show. In Claude Code, restart it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All the details are in the &lt;a href=&quot;https://notefeed.me/r/releases/subPuBJsOi_SDXU5k3yhtQ&quot;&gt;release notes&lt;/a&gt; and &lt;a href=&quot;https://github.com/notefeed/notefeed/releases/tag/v0.32.0&quot;&gt;on GitHub&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>release</category><category>v0.32.0</category></item><item><title>notefeed 0.31.1: the values page has its own address</title><link>https://marcelbruckner.de/blog/notefeed-0-31-1/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/notefeed-0-31-1/</guid><description>notefeed 0.31.1 is out.</description><pubDate>Wed, 28 Oct 2026 13:28:04 GMT</pubDate><content:encoded>&lt;p&gt;notefeed 0.31.1 is out.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The page that says what notefeed stands for is now at &lt;a href=&quot;https://docs.notefeed.me/values/&quot;&gt;https://docs.notefeed.me/values/&lt;/a&gt;. For a few hours it was at /vision/, which no longer works, so update any link you saved. The footer’s “Values” link and the start page point to the new address.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All the details are in the &lt;a href=&quot;https://notefeed.me/r/releases/mc90Qa_NgvBi0dQwCqhE-A&quot;&gt;release notes&lt;/a&gt; and &lt;a href=&quot;https://github.com/notefeed/notefeed/releases/tag/v0.31.1&quot;&gt;on GitHub&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>release</category><category>v0.31.1</category></item><item><title>notefeed 0.31.0: share pictures from the phone, images cleaned on the server</title><link>https://marcelbruckner.de/blog/notefeed-0-31-0/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/notefeed-0-31-0/</guid><description>notefeed 0.31.0 is out.</description><pubDate>Wed, 28 Oct 2026 12:54:11 GMT</pubDate><content:encoded>&lt;p&gt;notefeed 0.31.0 is out.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You can share pictures to notefeed from your phone. On Android, notefeed installed from Chrome now shows up in the share sheet for pictures, text and links. Pick a feed and they wait in its compose box until you post. Samsung Internet’s installed app does not do this yet. On the iPhone, a Shortcut does the same, and the new docs page “Sharing from a phone” shows how to set it up. Pictures in one post may now share a file name, unless the text refers to that name.&lt;/li&gt;
&lt;li&gt;Every image is now shrunk to at most 2560 px, turned upright and stripped of its location and camera data on the server, whatever posted it. Animations stay. An upload may now be up to 10 MiB instead of 5, so a phone photo can go as it is.&lt;/li&gt;
&lt;li&gt;A title image uploaded in a feed’s settings belongs to the feed and no longer shows up as a post. Scripts can set it with &lt;code&gt;PUT&lt;/code&gt; / &lt;code&gt;DELETE /api/v1/feeds/{feed}/image&lt;/code&gt;, &lt;code&gt;setFeedImage&lt;/code&gt; / &lt;code&gt;removeFeedImage&lt;/code&gt; (JS) or &lt;code&gt;set_feed_image&lt;/code&gt; / &lt;code&gt;remove_feed_image&lt;/code&gt; (Python). Title images uploaded before stay posts until you set them again. The footer and the ⓘ menu show the version an instance runs. On a wide screen, a note’s page has a large “All notes” link beside it, and large pictures in notes are kept to a sensible size. A new page linked from the footer, “Values”, says what notefeed stands for.&lt;/li&gt;
&lt;li&gt;AI assistants can now set a feed’s title image with &lt;code&gt;set_feed_image&lt;/code&gt;, and pictures posted with &lt;code&gt;post_note&lt;/code&gt; may share a name unless the markdown refers to it. Assistants see the new tool only after reconnecting. In Claude, start a new chat, or remove and add the notefeed connector if it still does not show. In Claude Code, restart it.&lt;/li&gt;
&lt;li&gt;Breaking: a file that only starts like an image but is not one is now refused with &lt;code&gt;415&lt;/code&gt;, and an image over 100 megapixels with &lt;code&gt;413&lt;/code&gt;. When the server is busy with images it answers &lt;code&gt;503&lt;/code&gt; with &lt;code&gt;Retry-After&lt;/code&gt;, which both clients raise as &lt;code&gt;RateLimitedError&lt;/code&gt;. Wait the given time and try again.&lt;/li&gt;
&lt;li&gt;If you run notefeed yourself, remove &lt;code&gt;NOTEFEED_SHRINK_IMAGE_BYTES&lt;/code&gt;: it is no longer used and logs a warning at startup. &lt;code&gt;NOTEFEED_MAX_IMAGE_BYTES&lt;/code&gt; now defaults to 10 MiB, which is also the most it can be set to.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All the details are in the &lt;a href=&quot;https://notefeed.me/r/releases/ZP95_0YRIZMDUyWRb6081A&quot;&gt;release notes&lt;/a&gt; and &lt;a href=&quot;https://github.com/notefeed/notefeed/releases/tag/v0.31.0&quot;&gt;on GitHub&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>release</category><category>v0.31.0</category></item><item><title>notefeed 0.30.0: create a feed before its first note, reset a lost password anywhere</title><link>https://marcelbruckner.de/blog/notefeed-0-30-0/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/notefeed-0-30-0/</guid><description>notefeed 0.30.0 is out.</description><pubDate>Tue, 27 Oct 2026 14:17:44 GMT</pubDate><content:encoded>&lt;p&gt;notefeed 0.30.0 is out.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You can create a feed without posting a note, to reserve its name with a password, a license and a read id from the start: with &lt;code&gt;POST /api/v1/feeds/{feed}&lt;/code&gt;, &lt;code&gt;createFeed&lt;/code&gt; / &lt;code&gt;create_feed&lt;/code&gt; in the clients, or “Create feed without a note” in a new feed’s card. On notefeed.me this needs a license key, which goes on the new feed. Free feeds still start with their first note.&lt;/li&gt;
&lt;li&gt;A lost feed password can now be reset with the feed’s license key from scripts too, with &lt;code&gt;POST /api/v1/feeds/{feed}/password/recover&lt;/code&gt; or &lt;code&gt;recoverFeedPassword&lt;/code&gt; / &lt;code&gt;recover_feed_password&lt;/code&gt; in the clients. A browser that is still unlocked finds it under “Forgot the current password?” in the feed’s settings. A changed password is now confirmed next to the password row. Feeds with an active license are no longer rate limited on posts, edits and deletes. Wrong passwords and keys still are.&lt;/li&gt;
&lt;li&gt;The page uses the whole width of the window. Mermaid diagrams are drawn in the timeline too, and a click opens one enlarged. The newest agent skills are always at &lt;code&gt;https://notefeed.me/r/skills/post-to-notefeed.md&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;AI assistants can now create a feed with &lt;code&gt;create_feed&lt;/code&gt; and reset a lost password with the license key through &lt;code&gt;recover_feed_password&lt;/code&gt;. Assistants see the new tools only after reconnecting. In Claude, start a new chat, or remove and add the notefeed connector if they still do not show. In Claude Code, restart it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All the details are in the &lt;a href=&quot;https://notefeed.me/r/releases/oahTrJZvlaszCYVBqXlqxQ&quot;&gt;release notes&lt;/a&gt; and &lt;a href=&quot;https://github.com/notefeed/notefeed/releases/tag/v0.30.0&quot;&gt;on GitHub&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>release</category><category>v0.30.0</category></item><item><title>My Trilium setup: notes Claude can read, write and remember</title><link>https://marcelbruckner.de/blog/my-trilium-setup/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/my-trilium-setup/</guid><description>My notes have lived in Trilium for years. Over the last few weeks they became something Claude works in too: it reads them before it answers, files what we figure out, and turns the articles I save into a wiki. This …</description><pubDate>Tue, 27 Oct 2026 12:26:35 GMT</pubDate><content:encoded>&lt;p&gt;My notes have lived in &lt;a href=&quot;https://triliumnotes.org&quot;&gt;Trilium&lt;/a&gt; for years. Over the last few weeks they became something Claude works in too: it reads them before it answers, files what we figure out, and turns the articles I save into a wiki. This post is the map: which pieces there are, how they fit together, and where each one has its own post.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-mermaid&quot;&gt;flowchart LR
  me[&quot;Me: browser, phone&quot;] -- &quot;save + tag&quot; --&amp;gt; kk[&quot;Karakeep&quot;]
  kk -- &quot;tagged bookmarks&quot; --&amp;gt; sync[&quot;karakeep-trilium-sync&quot;]
  claude[&quot;Claude: Code, claude.ai, apps&quot;] -- &quot;MCP, OAuth login&quot; --&amp;gt; proxy[&quot;trilium-mcp-proxy&quot;]
  claude -- &quot;recall&quot; --&amp;gt; recall[&quot;trilium-recall&quot;]
  subgraph T[&quot;Trilium&quot;]
    mcp[&quot;built-in MCP server&quot;]
    src[&quot;Sources&quot;]
    wiki[&quot;Wiki&quot;]
  end
  proxy --&amp;gt; mcp
  recall -. &quot;reads&quot; .-&amp;gt; T
  sync --&amp;gt; src
  mcp -- &quot;ingest&quot; --&amp;gt; wiki
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;the-pieces&quot;&gt;The pieces&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Piece&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Trilium&lt;/strong&gt; 0.106+&lt;/td&gt;
&lt;td&gt;The notes. Since 0.106 it has its own MCP server, so any MCP client can search, read and write them.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://trilium-mcp-proxy.marceltov.de/&quot;&gt;trilium-mcp-proxy&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Puts an OAuth login in front of that server: add one URL to claude.ai or Claude Code and log in with your Trilium password, no token to paste.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://trilium-recall.marceltov.de/&quot;&gt;trilium-recall&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A search index next to Trilium (keywords plus embeddings, German and English) that hands Claude what the notes already know, before it starts guessing.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://trilium-llm-wiki.marceltov.de/&quot;&gt;trilium-llm-wiki&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A Claude Code plugin that builds and maintains an LLM wiki inside Trilium, following Karpathy’s pattern.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://trilium-plugin.marceltov.de/&quot;&gt;trilium-plugin&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Claude Code skills for everyday notes: search, create, move, tag, templates, journal, export.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://karakeep-trilium-sync.marceltov.de/&quot;&gt;karakeep-trilium-sync&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Copies bookmarks I tag &lt;code&gt;trilium&lt;/code&gt; in &lt;a href=&quot;https://karakeep.app/&quot;&gt;Karakeep&lt;/a&gt; into the wiki’s &lt;em&gt;Sources&lt;/em&gt; every 15 minutes.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;All of them are open source (AGPL-3.0-or-later) and run as small containers next to Trilium, or as plugins in Claude Code.&lt;/p&gt;
&lt;h3 id=&quot;how-knowledge-gets-in&quot;&gt;How knowledge gets in&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Collect.&lt;/strong&gt; I save an article to Karakeep and tag it &lt;code&gt;trilium&lt;/code&gt;. Reddit posts I save get the tag automatically.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sync.&lt;/strong&gt; A few minutes later it is a read-only source note in Trilium.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ingest.&lt;/strong&gt; I tell Claude “ingest”. It reads the source, writes a summary, updates the concept and entity pages it touches and logs the change in the day note. The rules for all of that live in a schema note in Trilium, so I change the wiki’s conventions by editing a note.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Adopt.&lt;/strong&gt; At the end of a work session Claude offers to file what we found: a decision, a fix, how a system actually behaves. Most of my wiki comes from this, not from articles.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Review.&lt;/strong&gt; Everything Claude writes is a draft marked AI-assisted until I set it to reviewed.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;how-it-gets-back-out&quot;&gt;How it gets back out&lt;/h3&gt;
&lt;p&gt;Connecting Claude to Trilium isn’t enough: a model rarely stops to ask “do my notes know something about this?”. trilium-recall closes that gap. In Claude Code a prompt hook checks every prompt against the index and adds up to three short passages when the notes have something, and nothing when they don’t. On claude.ai the same engine is an MCP server whose instructions tell Claude when to look. In practice this is what makes the rest worth it: I speak a rough request (“the server from yesterday”, “like we did for the other repo”) and Claude starts from what I already wrote down.&lt;/p&gt;
&lt;h3 id=&quot;what-changed-this-week&quot;&gt;What changed this week&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Trilium’s own MCP server replaced mine.&lt;/strong&gt; My ETAPI-based &lt;a href=&quot;https://github.com/Marceltov/trilium-mcp&quot;&gt;trilium-mcp&lt;/a&gt; is archived; the plugins now use the built-in tools, and trilium-mcp-proxy only adds the login.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;trilium-recall became its own project&lt;/strong&gt;, because it indexes all of Trilium, not only the wiki. Since 0.6.0 adding its URL to a client is the whole setup.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Release notes land here.&lt;/strong&gt; Every release of these projects now posts its notes to this feed automatically.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;where-to-read-more&quot;&gt;Where to read more&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://notefeed.me/r/trilium/pPC25okFxqeY4n8kDzO3Tg&quot;&gt;trilium-recall: Claude remembers what you wrote in Trilium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://notefeed.me/r/trilium/yF3oV-gRPjM3c6xGU7pHoA&quot;&gt;An LLM wiki in Trilium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://notefeed.me/r/trilium/LBu8yKKFJlUpSk7q8mnTzA&quot;&gt;trilium-mcp-proxy: log in to Trilium’s MCP server with your password&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Follow along with the &lt;a href=&quot;https://notefeed.me/r/trilium/feed.xml&quot;&gt;RSS feed&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>trilium</category><category>ai</category><category>claude</category></item><item><title>trilium-mcp-proxy: log in to Trilium&apos;s MCP server with your password</title><link>https://marcelbruckner.de/blog/trilium-mcp-proxy/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/trilium-mcp-proxy/</guid><description>Since 0.106, Trilium has an MCP server built in, at /mcp. That&apos;s great news for anyone who uses Claude or another assistant with their notes: no more third-party server translating ETAPI into tools. It also meant the …</description><pubDate>Tue, 27 Oct 2026 12:26:35 GMT</pubDate><content:encoded>&lt;p&gt;Since 0.106, Trilium has an MCP server built in, at &lt;code&gt;/mcp&lt;/code&gt;. That’s great news for anyone who uses Claude or another assistant with their notes: no more third-party server translating ETAPI into tools. It also meant the end of my own &lt;a href=&quot;https://github.com/Marceltov/trilium-mcp&quot;&gt;trilium-mcp&lt;/a&gt;, which did exactly that for two months and is archived now.&lt;/p&gt;
&lt;p&gt;One thing was left: the login. Trilium’s MCP server takes an ETAPI token in the &lt;code&gt;Authorization&lt;/code&gt; header. So for every client you create a token under &lt;em&gt;Options → ETAPI&lt;/em&gt;, paste it into that client’s configuration, and remember where you put it. &lt;strong&gt;&lt;a href=&quot;https://trilium-mcp-proxy.marceltov.de/&quot;&gt;trilium-mcp-proxy&lt;/a&gt;&lt;/strong&gt; removes that step.&lt;/p&gt;
&lt;h3 id=&quot;what-it-does&quot;&gt;What it does&lt;/h3&gt;
&lt;p&gt;You add the proxy’s URL to any MCP client (claude.ai, Claude Code, the Claude desktop and mobile apps) and log in once in the browser with your &lt;strong&gt;Trilium password&lt;/strong&gt;. That’s it.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Your password stays on your server.&lt;/strong&gt; The login page is the proxy’s own, next to Trilium. The password goes from your browser to it and on to Trilium’s &lt;code&gt;/etapi/auth/login&lt;/code&gt;, which creates an ETAPI token for that client. The proxy never stores or logs the password, and the client only ever sees opaque OAuth tokens that work nowhere else.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Two-factor works.&lt;/strong&gt; With TOTP switched on in Trilium, the login page asks for the code (since 0.1.1).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;It’s transparent.&lt;/strong&gt; Every &lt;code&gt;/mcp&lt;/code&gt; request goes to Trilium unchanged, with only &lt;code&gt;Authorization&lt;/code&gt; swapped. The tools are exactly Trilium’s, so new ones arrive with Trilium updates, without a proxy release.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;House rules.&lt;/strong&gt; Optionally, &lt;code&gt;MCP_INSTRUCTIONS&lt;/code&gt; adds standing instructions to Trilium’s &lt;code&gt;initialize&lt;/code&gt; answer, which every client reads when it connects. Mine says: there is an LLM wiki here, read its schema before writing, mark pages as AI-assisted, never write under &lt;em&gt;Sources&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revoking is simple.&lt;/strong&gt; Each login is its own ETAPI token in &lt;em&gt;Options → ETAPI&lt;/em&gt;. Delete it there, and that client is out.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;running-it&quot;&gt;Running it&lt;/h3&gt;
&lt;p&gt;Switch on Trilium’s MCP server (&lt;em&gt;Options → AI / LLM → MCP server&lt;/em&gt;), then add one service next to Trilium:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-dimmed&quot; style=&quot;background-color:#22272e;color:#adbac7; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8DDB8C&quot;&gt;  trilium-mcp-proxy&lt;/span&gt;&lt;span style=&quot;color:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8DDB8C&quot;&gt;    image&lt;/span&gt;&lt;span style=&quot;color:#ADBAC7&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt;ghcr.io/marceltov/trilium-mcp-proxy:latest&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8DDB8C&quot;&gt;    restart&lt;/span&gt;&lt;span style=&quot;color:#ADBAC7&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt;unless-stopped&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8DDB8C&quot;&gt;    environment&lt;/span&gt;&lt;span style=&quot;color:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8DDB8C&quot;&gt;      TRILIUM_SERVER_URL&lt;/span&gt;&lt;span style=&quot;color:#ADBAC7&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt;http://trilium:8080&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8DDB8C&quot;&gt;      MCP_BASE_URL&lt;/span&gt;&lt;span style=&quot;color:#ADBAC7&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt;https://trilium-mcp-proxy.example.org&lt;/span&gt;&lt;span style=&quot;color:#768390&quot;&gt;   # public URL, behind your TLS proxy&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8DDB8C&quot;&gt;      MCP_OAUTH_SECRET&lt;/span&gt;&lt;span style=&quot;color:#ADBAC7&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt;${MCP_OAUTH_SECRET}&lt;/span&gt;&lt;span style=&quot;color:#768390&quot;&gt;                 # openssl rand -hex 32&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8DDB8C&quot;&gt;    volumes&lt;/span&gt;&lt;span style=&quot;color:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ADBAC7&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt;mcp-proxy-oauth:/data&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8DDB8C&quot;&gt;    ports&lt;/span&gt;&lt;span style=&quot;color:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ADBAC7&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt;&quot;8081:8081&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;On claude.ai: &lt;em&gt;Customize → Connectors → Add custom connector&lt;/em&gt; with &lt;code&gt;https://trilium-mcp-proxy.example.org/mcp&lt;/code&gt;. In Claude Code:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-dimmed&quot; style=&quot;background-color:#22272e;color:#adbac7; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F69D50&quot;&gt;claude&lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt; mcp&lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt; add&lt;/span&gt;&lt;span style=&quot;color:#6CB6FF&quot;&gt; --transport&lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt; http&lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt; trilium&lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt; https://trilium-mcp-proxy.example.org/mcp&lt;/span&gt;&lt;span style=&quot;color:#6CB6FF&quot;&gt; -s&lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt; user&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#768390&quot;&gt;# then /mcp → Authenticate&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It uses about 20 MiB. I run one per Trilium instance (three in our household); I built a mode that serves several instances from one container and threw it away, because it saved little and tied all three to one secret and one failure point.&lt;/p&gt;
&lt;h3 id=&quot;gotchas-with-the-built-in-tools&quot;&gt;Gotchas with the built-in tools&lt;/h3&gt;
&lt;p&gt;Moving my plugins from trilium-mcp to Trilium’s own tools turned up a few differences worth knowing: they read and write Markdown, not HTML; &lt;code&gt;set_attribute&lt;/code&gt; replaces an attribute of the same name; &lt;code&gt;move_note&lt;/code&gt; on a cloned note moves only its original placement; and there is no tool for day notes, note maps or ZIP export yet. &lt;a href=&quot;https://trilium-plugin.marceltov.de/&quot;&gt;trilium-plugin&lt;/a&gt; and &lt;a href=&quot;https://trilium-llm-wiki.marceltov.de/&quot;&gt;trilium-llm-wiki&lt;/a&gt; work around these.&lt;/p&gt;
&lt;h3 id=&quot;the-goal-retire-it&quot;&gt;The goal: retire it&lt;/h3&gt;
&lt;p&gt;The proxy is a stopgap. Trilium already has a login with password, TOTP and OpenID; it only needs to speak OAuth for MCP clients. I’ve proposed that upstream in &lt;a href=&quot;https://github.com/TriliumNext/Trilium/issues/12309&quot;&gt;TriliumNext/Trilium#12309&lt;/a&gt;: Trilium’s normal login plus a consent page, the access token being an ETAPI token named after the client, off by default, no schema change. If the maintainers agree, I’d like to build it, and then this proxy can go.&lt;/p&gt;
&lt;p&gt;It’s licensed AGPL-3.0-or-later. Setup details are in the &lt;a href=&quot;https://trilium-mcp-proxy.marceltov.de/&quot;&gt;docs&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Discussion on GitHub: &lt;a href=&quot;https://github.com/orgs/TriliumNext/discussions/12310&quot;&gt;TriliumNext discussion #12310&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>trilium</category><category>ai</category><category>claude</category></item><item><title>notefeed 0.29.0: editable tags, claiming open feeds and better long notes</title><link>https://marcelbruckner.de/blog/notefeed-0-29-0/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/notefeed-0-29-0/</guid><description>notefeed 0.29.0 is out.</description><pubDate>Tue, 27 Oct 2026 10:40:21 GMT</pubDate><content:encoded>&lt;p&gt;notefeed 0.29.0 is out.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You can change a note’s tags after posting: in the edit form, with &lt;code&gt;PATCH&lt;/code&gt; and &lt;code&gt;tags&lt;/code&gt;, or with &lt;code&gt;notefeed update --tags&lt;/code&gt; in both clients. An empty list removes them. Tags that are numbers now sort as numbers, so v0.9.1 comes before v0.10.0.&lt;/li&gt;
&lt;li&gt;An open feed can now get a password later. Whoever has the feed’s name can set the first one, on the settings page, with &lt;code&gt;PUT /api/v1/feeds/{feed}/password&lt;/code&gt; or with the clients. The read link and RSS stay open. Where licenses are sold, a license can now go on a feed without a password, when it is created or later from its settings.&lt;/li&gt;
&lt;li&gt;Long notes read better: headings get anchors, three or more headings get a table of contents, pictures can be sized with &lt;code&gt;![](https://notefeed.me/r/news/shot.png#width=480)&lt;/code&gt;, code is highlighted on the page and in RSS, and Mermaid diagrams are drawn. A note posted with a name (&lt;code&gt;X-Note-Name&lt;/code&gt;) can be fetched by that name at &lt;code&gt;/r/&amp;lt;read id&amp;gt;/&amp;lt;name&amp;gt;&lt;/code&gt;, which always serves the newest note with that name.&lt;/li&gt;
&lt;li&gt;AI assistants can now set a note’s tags with &lt;code&gt;edit_note&lt;/code&gt;, give a note a name with &lt;code&gt;post_note&lt;/code&gt;, and set a feed’s password or license with &lt;code&gt;update_feed&lt;/code&gt;, which also no longer needs a title and description every time. Assistants see the changed tools only after reconnecting. In Claude, start a new chat, or remove and add the notefeed connector if they still do not show. In Claude Code, restart it.&lt;/li&gt;
&lt;li&gt;Breaking: where licenses are sold, a lapsed license key is now refused with &lt;code&gt;402&lt;/code&gt; instead of being accepted and doing nothing. An unknown key counts as a failed attempt, like a wrong password. Renew the license or send a valid key.&lt;/li&gt;
&lt;li&gt;If you run notefeed yourself, upgrade soon: this release includes Next.js security fixes. The footer now links only the feeds listed in &lt;code&gt;NOTEFEED_FOOTER_FEEDS&lt;/code&gt;, in that order, and none if it is unset, so set it before upgrading if you want footer links. Reserved feeds no longer hit the free tier’s limits, and euro prices show as &lt;code&gt;1.99 €&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All the details are in the &lt;a href=&quot;https://notefeed.me/r/releases/EJfjDpivF0LPio92z7LSqw&quot;&gt;release notes&lt;/a&gt; and &lt;a href=&quot;https://github.com/notefeed/notefeed/releases/tag/v0.29.0&quot;&gt;on GitHub&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>release</category><category>v0.29.0</category></item><item><title>How freundebuch releases reach this feed</title><link>https://marcelbruckner.de/blog/how-freundebuch-releases-reach-this-feed/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/how-freundebuch-releases-reach-this-feed/</guid><description>Until today freundebuch had no releases: every merge to main updated the :main image, and if you ran it you got whatever was newest. Now there are versioned releases, and each one shows up here on its own. The first, …</description><pubDate>Tue, 27 Oct 2026 10:38:55 GMT</pubDate><content:encoded>&lt;p&gt;Until today freundebuch had no releases: every merge to &lt;code&gt;main&lt;/code&gt; updated the &lt;code&gt;:main&lt;/code&gt; image, and if you ran it you got whatever was newest. Now there are versioned releases, and each one shows up here on its own. The first, &lt;a href=&quot;https://github.com/Marceltov/freundebuch/releases/tag/v0.1.0&quot;&gt;0.1.0&lt;/a&gt;, is the note just below this one.&lt;/p&gt;
&lt;h3 id=&quot;what-happens-on-a-release&quot;&gt;What happens on a release&lt;/h3&gt;
&lt;p&gt;I push a tag such as &lt;code&gt;v0.2.0&lt;/code&gt;. GitHub Actions runs the same pipeline as on &lt;code&gt;main&lt;/code&gt;: lint, typecheck, the unit tests, the Playwright tests and a smoke test that starts the container and waits for it to report healthy, while it builds the image for amd64 and arm64. Only when all of that passes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;The image gets its version&lt;/strong&gt;: &lt;code&gt;ghcr.io/marceltov/freundebuch:0.2.0&lt;/code&gt;, &lt;code&gt;:0.2&lt;/code&gt; and &lt;code&gt;:latest&lt;/code&gt;. A pre-release like &lt;code&gt;v0.2.0-rc.1&lt;/code&gt; only gets its own tag, so &lt;code&gt;latest&lt;/code&gt; never points at one.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A GitHub release is made&lt;/strong&gt;, with GitHub’s generated list of the pull requests merged since the previous tag and a &lt;code&gt;docker pull&lt;/code&gt; line.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The same notes are posted here&lt;/strong&gt;, tagged &lt;code&gt;release&lt;/code&gt; and with the version, plus a link to the GitHub release.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class=&quot;language-mermaid&quot;&gt;flowchart LR
  T[tag v0.2.0] --&amp;gt; C[tests and smoke test]
  T --&amp;gt; B[image build, amd64 + arm64]
  C --&amp;gt; I[image tags 0.2.0, 0.2, latest]
  B --&amp;gt; I
  I --&amp;gt; R[GitHub release]
  R --&amp;gt; N[note on this feed]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For 0.1.0 the whole run took about 11 minutes from the tag to the note. A re-run doesn’t post twice: it first asks notefeed whether a note with that version tag is already there.&lt;/p&gt;
&lt;h3 id=&quot;pinning-a-version&quot;&gt;Pinning a version&lt;/h3&gt;
&lt;p&gt;To upgrade only when you choose, pin a version in your &lt;code&gt;compose.yaml&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-dimmed&quot; style=&quot;background-color:#22272e;color:#adbac7; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8DDB8C&quot;&gt;services&lt;/span&gt;&lt;span style=&quot;color:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8DDB8C&quot;&gt;  freundebuch&lt;/span&gt;&lt;span style=&quot;color:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8DDB8C&quot;&gt;    image&lt;/span&gt;&lt;span style=&quot;color:#ADBAC7&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt;ghcr.io/marceltov/freundebuch:0.1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;:main&lt;/code&gt; stays as it is, for everyone who wants every merge.&lt;/p&gt;
&lt;h3 id=&quot;good-to-know&quot;&gt;Good to know&lt;/h3&gt;
&lt;p&gt;The first release has no earlier tag to count from, so its notes list every pull request since the start (26 of them). From 0.2.0 on, each release lists only what’s new. The notes are PR titles, which are written for me more than for you; I’ll post a note in my own words alongside the bigger releases, like the two earlier ones on this feed.&lt;/p&gt;
&lt;p&gt;The workflow is in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/blob/main/.github/workflows/ci.yml&quot;&gt;&lt;code&gt;.github/workflows/ci.yml&lt;/code&gt;&lt;/a&gt;. This feed has RSS at &lt;a href=&quot;https://notefeed.me/r/freundebuch/feed.xml&quot;&gt;https://notefeed.me/r/freundebuch/feed.xml&lt;/a&gt;. If something about the release notes doesn’t work for you, tell me.&lt;/p&gt;
</content:encoded><category>release</category><category>ci</category><category>docker</category><category>self-hosting</category></item><item><title>freundebuch 0.1.0</title><link>https://marcelbruckner.de/blog/freundebuch-0-1-0/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/freundebuch-0-1-0/</guid><description>The release on GitHub</description><pubDate>Tue, 27 Oct 2026 10:38:06 GMT</pubDate><content:encoded>&lt;h2 id=&quot;whats-changed&quot;&gt;What’s Changed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;FREUNDEBUCH #1: freundebuch v1 by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/2&quot;&gt;https://github.com/Marceltov/freundebuch/pull/2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH #3: Add architecture notes to CLAUDE.md by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/4&quot;&gt;https://github.com/Marceltov/freundebuch/pull/4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH #5: Link every person, conversation and item to the web view by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/6&quot;&gt;https://github.com/Marceltov/freundebuch/pull/6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH #7: Change a conversation’s date afterwards by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/9&quot;&gt;https://github.com/Marceltov/freundebuch/pull/9&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH #8: Managed groups with other names, group page and start-page filter by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/10&quot;&gt;https://github.com/Marceltov/freundebuch/pull/10&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH #11: A friendlier look, and Verlauf, Leute, Bald and a person menu by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/12&quot;&gt;https://github.com/Marceltov/freundebuch/pull/12&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CI: build arm64 natively, run each branch once, cache Playwright’s browser by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/13&quot;&gt;https://github.com/Marceltov/freundebuch/pull/13&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH #14: A labeled item menu, editing in a sheet, Gehört zu as a list by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/15&quot;&gt;https://github.com/Marceltov/freundebuch/pull/15&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH #16: Erzählen, a chat with Claude inside the web app by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/17&quot;&gt;https://github.com/Marceltov/freundebuch/pull/17&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH #18: The chat shows a message at once, and Claude thinking by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/19&quot;&gt;https://github.com/Marceltov/freundebuch/pull/19&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH #20: The birthday chip shows the year of birth and today’s age by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/21&quot;&gt;https://github.com/Marceltov/freundebuch/pull/21&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH #22: A user’s person keeps a name given in freundebuch by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/23&quot;&gt;https://github.com/Marceltov/freundebuch/pull/23&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH #26: Phone fixes: readable orbit, the book’s people for new users, chat and keyboard by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/27&quot;&gt;https://github.com/Marceltov/freundebuch/pull/27&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH #24: remember: file a birthday or a fact without a conversation by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/25&quot;&gt;https://github.com/Marceltov/freundebuch/pull/25&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Docs: the user guide catches up with the app by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/28&quot;&gt;https://github.com/Marceltov/freundebuch/pull/28&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FREUNDEBUCH #29: Build the image alongside the tests by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/30&quot;&gt;https://github.com/Marceltov/freundebuch/pull/30&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Life events from social media, via shared screenshots by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/35&quot;&gt;https://github.com/Marceltov/freundebuch/pull/35&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Soft colour bubbles behind the page by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/37&quot;&gt;https://github.com/Marceltov/freundebuch/pull/37&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Calendar feed: birthdays and dates as an ICS subscription by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/38&quot;&gt;https://github.com/Marceltov/freundebuch/pull/38&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Roles to us, situations with nudges, gender and the network view by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/39&quot;&gt;https://github.com/Marceltov/freundebuch/pull/39&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tool results tell Claude what to do next by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/41&quot;&gt;https://github.com/Marceltov/freundebuch/pull/41&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;e2e: give the chat’s first reply 15 s by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/42&quot;&gt;https://github.com/Marceltov/freundebuch/pull/42&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Either user edits or deletes a shared item by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/43&quot;&gt;https://github.com/Marceltov/freundebuch/pull/43&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Relabel only the words that need the new gender; no interval for the household by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/44&quot;&gt;https://github.com/Marceltov/freundebuch/pull/44&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Release on a version tag: image tags, GitHub release, notefeed post by @Marceltov in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/45&quot;&gt;https://github.com/Marceltov/freundebuch/pull/45&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;new-contributors&quot;&gt;New Contributors&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;@Marceltov made their first contribution in &lt;a href=&quot;https://github.com/Marceltov/freundebuch/pull/2&quot;&gt;https://github.com/Marceltov/freundebuch/pull/2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a href=&quot;https://github.com/Marceltov/freundebuch/commits/v0.1.0&quot;&gt;https://github.com/Marceltov/freundebuch/commits/v0.1.0&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;image&quot;&gt;Image&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark-dimmed&quot; style=&quot;background-color:#22272e;color:#adbac7; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F69D50&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt; pull&lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt; ghcr.io/marceltov/freundebuch:0.1.0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/Marceltov/freundebuch/releases/tag/v0.1.0&quot;&gt;The release on GitHub&lt;/a&gt;&lt;/p&gt;
</content:encoded><category>release</category><category>v0.1.0</category></item><item><title>Roles, situations and a calendar feed</title><link>https://marcelbruckner.de/blog/roles-situations-and-a-calendar-feed/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/roles-situations-and-a-calendar-feed/</guid><description>Over the last two days freundebuch learned the difference between who someone is to us and what&apos;s going on in their life. It also got a calendar feed, and Claude now gets told what to do after each call.</description><pubDate>Tue, 27 Oct 2026 09:32:22 GMT</pubDate><content:encoded>&lt;p&gt;Over the last two days freundebuch learned the difference between who someone is to us and what’s going on in their life. It also got a calendar feed, and Claude now gets told what to do after each call.&lt;/p&gt;
&lt;h3 id=&quot;roles-are-relationships-now&quot;&gt;Roles are relationships now&lt;/h3&gt;
&lt;p&gt;“Our landlady” used to be filed as a fact, right next to the news about her new sink. Now it’s a relationship to the household: to “me” or to “us”. It’s written in plain German words for both ends (“Vermieterin” / “Mieter:in”) instead of a fixed type. People can have an optional gender, so the page reads “Unsere Vermieterin”. Claude only sets a gender when I say it or use a pronoun, never from the name. When a gender changes, Claude is told which words need regendering. That’s now only the neutral ones: setting 11 genders on my data listed 2 words to fix instead of 18.&lt;/p&gt;
&lt;h3 id=&quot;situations-that-nudge&quot;&gt;Situations that nudge&lt;/h3&gt;
&lt;p&gt;Facts are split into two kinds. &lt;strong&gt;Gut zu wissen&lt;/strong&gt; holds lasting ones (job, kids, allergies). &lt;strong&gt;Gerade los&lt;/strong&gt; holds situations (a trip, a renovation). Each situation has a day to check in again. On that day it moves to the top of the page and into the daily push: “💬 Frag mal nach: Anna – sucht ein Auto”. Without a date it’s six weeks. When there’s news, Claude suggests a new day and agrees it with me before filing.&lt;/p&gt;
&lt;p&gt;The person page also draws a small network: the household on top, the person in the middle, their people below, with a label on every line.&lt;/p&gt;
&lt;h3 id=&quot;tool-results-say-whats-next&quot;&gt;Tool results say what’s next&lt;/h3&gt;
&lt;p&gt;Every MCP tool result now carries &lt;code&gt;next&lt;/code&gt;: short instructions built from what the call actually did. One example: “this situation nudges on 8 December, a default; tell the user.” Another: “two people match, ask which one.” Before, that guidance lived in the tool descriptions, where Claude had to remember it before it knew what the call had done. Now it arrives right after the call.&lt;/p&gt;
&lt;h3 id=&quot;also-new&quot;&gt;Also new&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Calendar feed&lt;/strong&gt;: birthdays (with the age when the year is known), other dates, and your own promises that have a due date, as an ICS URL you can subscribe to. Google refreshes it only every few hours, sometimes once a day.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Either of us can fix a shared item&lt;/strong&gt;, not just whoever recorded it. Making an item private stays with the person who recorded it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Softer background&lt;/strong&gt;: slow colour bubbles that stand still if you’ve turned motion off.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/Marceltov/freundebuch/pulls?q=is%3Amerged&quot;&gt;Changelog on GitHub&lt;/a&gt;. Tell me what you’d want from the nudges.&lt;/p&gt;
</content:encoded><category>release</category><category>mcp</category><category>calendar</category><category>privacy</category></item><item><title>freundebuch: a personal CRM you talk to</title><link>https://marcelbruckner.de/blog/freundebuch/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/freundebuch/</guid><description>You meet a friend and can&apos;t remember whether her new job has started, what her kid is called, or that you promised to send her a contact. I wanted something for that moment that doesn&apos;t ask me to fill in forms. So I …</description><pubDate>Tue, 27 Oct 2026 09:32:09 GMT</pubDate><content:encoded>&lt;p&gt;You meet a friend and can’t remember whether her new job has started, what her kid is called, or that you promised to send her a contact. I wanted something for that moment that doesn’t ask me to fill in forms. So I built &lt;a href=&quot;https://marceltov.github.io/freundebuch/&quot;&gt;freundebuch&lt;/a&gt;, a personal CRM for one household, where Claude does all the typing.&lt;/p&gt;
&lt;h3 id=&quot;how-it-works&quot;&gt;How it works&lt;/h3&gt;
&lt;p&gt;After a dinner I ramble about it to the Claude app, by voice or text. Claude files it through freundebuch’s built-in &lt;a href=&quot;https://modelcontextprotocol.io&quot;&gt;MCP&lt;/a&gt; endpoint: who was there, what’s new, what I promised, gift ideas, birthdays, who is related to whom. The full transcript is kept. Before I see someone again I ask “I’m seeing Anna tomorrow, what’s new?” and get a briefing: the last meetings, what’s going on, open promises, upcoming dates.&lt;/p&gt;
&lt;p&gt;MCP is the main interface. Every feature works there first. A REST API (with OpenAPI) and a German web app sit on the same domain layer. The web app is mostly for looking things up on my phone:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The orbit&lt;/strong&gt;: me in the middle, friends on rings by how long it’s been. Anyone overdue for their check-in interval drifts outward.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A page per person&lt;/strong&gt;: what’s going on, what’s good to know, promises, dates, and the people around them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Erzählen&lt;/strong&gt;: a chat with Claude inside the app, using the same tools, for when I’m not in the Claude app.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reminders&lt;/strong&gt; once a day to a webhook such as &lt;a href=&quot;https://ntfy.sh&quot;&gt;ntfy&lt;/a&gt;: birthdays, promises, overdue friends.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;shared-with-private-parts&quot;&gt;Shared, with private parts&lt;/h3&gt;
&lt;p&gt;Two people in a household share one freundebuch. Anything said in confidence can be private to whoever recorded it, down to a single fact. Claude asks before filing when something sounds sensitive (health, money, relationship trouble). In the code, privacy is one function that every read goes through, so a private item can’t leak through a count or a summary. Tests check that by seeding a household.&lt;/p&gt;
&lt;h3 id=&quot;whats-in-it-so-far&quot;&gt;What’s in it so far&lt;/h3&gt;
&lt;p&gt;I started on 23 October, and 44 PRs are merged as of today. Besides the core:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Groups&lt;/strong&gt; with other names (“Kollegen” is “Arbeit”).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Screenshots from social media&lt;/strong&gt;: share a friend’s Instagram or LinkedIn post and it lands on their page (“Urlaub in Lissabon · Instagram, 12. Oktober”). If Claude isn’t sure who it is, or it looks sensitive, it waits for me to check.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A calendar feed&lt;/strong&gt; of birthdays and dates that Google Calendar can subscribe to.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Roles and situations&lt;/strong&gt;: “our landlady” is a relationship to us, not a fact. “Renovating the bathroom” is a situation that nudges me to ask about it later.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;what-it-isnt&quot;&gt;What it isn’t&lt;/h3&gt;
&lt;p&gt;It isn’t a contact book (no phone numbers or addresses) and it isn’t multi-tenant: one instance per household, signed in through your own identity provider (authentik). It’s one container with one SQLite file, and it’s licensed AGPL-3.0.&lt;/p&gt;
&lt;p&gt;The code is on &lt;a href=&quot;https://github.com/Marceltov/freundebuch&quot;&gt;GitHub&lt;/a&gt;, and the docs explain &lt;a href=&quot;https://marceltov.github.io/freundebuch/getting-started/&quot;&gt;self-hosting&lt;/a&gt;. This feed is where I’ll post what changes. If you try it, I’d like to hear how the rambling feels.&lt;/p&gt;
</content:encoded><category>intro</category><category>mcp</category><category>privacy</category><category>self-hosting</category></item><item><title>notefeed 0.28.0: scheduled notes and changeable dates</title><link>https://marcelbruckner.de/blog/notefeed-0-28-0/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/notefeed-0-28-0/</guid><description>notefeed 0.28.0 is out.</description><pubDate>Mon, 26 Oct 2026 19:46:47 GMT</pubDate><content:encoded>&lt;p&gt;notefeed 0.28.0 is out.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A note posted with a date in the future is scheduled. Readers see it on the read page, in RSS and in the read API only from that time on. You see it marked as scheduled.&lt;/li&gt;
&lt;li&gt;You can change a note’s date at any time: in the edit form on the note’s page, with &lt;code&gt;PATCH&lt;/code&gt; and &lt;code&gt;date&lt;/code&gt;, with &lt;code&gt;notefeed update --date&lt;/code&gt; in both clients, or by asking an AI assistant through &lt;code&gt;edit_note&lt;/code&gt;. Pictures posted with a note move with it.&lt;/li&gt;
&lt;li&gt;Breaking: the header for a note’s time is now &lt;code&gt;X-Note-Date&lt;/code&gt;, and a post that still sends &lt;code&gt;X-Note-Created&lt;/code&gt; is refused with an error. Everywhere else it is &lt;code&gt;date&lt;/code&gt; instead of &lt;code&gt;created_at&lt;/code&gt;, &lt;code&gt;createdAt&lt;/code&gt; or &lt;code&gt;--created&lt;/code&gt;. The old names no longer work.&lt;/li&gt;
&lt;li&gt;Note ids are now random. Every existing note gets a new id and keeps its date, so links to single notes and their pictures stop working, and links from one feed to another are not updated. If you run notefeed yourself, back up your data and images before upgrading.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All the details are in the &lt;a href=&quot;https://notefeed.me/r/releases/8i_de3wIVwinm89EJNuo7j&quot;&gt;release notes&lt;/a&gt; and &lt;a href=&quot;https://github.com/notefeed/notefeed/releases/tag/v0.28.0&quot;&gt;on GitHub&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>release</category><category>v0.28.0</category></item><item><title>An LLM wiki in Trilium: Claude builds and maintains a linked knowledge base</title><link>https://marcelbruckner.de/blog/an-llm-wiki-in-trilium/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/an-llm-wiki-in-trilium/</guid><description>Andrej Karpathy described an &quot;LLM wiki&quot;: you collect sources, and an LLM turns them into a wiki of linked pages, answers questions from it and keeps it tidy. People are good at choosing what to read and bad at the …</description><pubDate>Mon, 26 Oct 2026 17:43:38 GMT</pubDate><content:encoded>&lt;p&gt;Andrej Karpathy described an “&lt;a href=&quot;https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f&quot;&gt;LLM wiki&lt;/a&gt;”: you collect sources, and an LLM turns them into a wiki of linked pages, answers questions from it and keeps it tidy. People are good at choosing what to read and bad at the upkeep a wiki needs: cross-references, updating ten pages when one new source arrives, noticing contradictions. In this pattern, that upkeep becomes the assistant’s job.&lt;/p&gt;
&lt;p&gt;Most setups build this on Obsidian and plain Markdown files. Trilium already has the pieces they build by hand, so I built mine on Trilium:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://trilium-llm-wiki.marceltov.de/&quot;&gt;trilium-llm-wiki&lt;/a&gt;&lt;/strong&gt; is a Claude Code plugin that builds and maintains an LLM wiki in your Trilium, using Trilium’s built-in MCP server.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://trilium-llm-wiki.marceltov.de/assets/graph.png&quot; alt=&quot;The wiki’s graph in Trilium: hub pages (violet) such as Homelab, Trilium and Hetzner, each surrounded by its concept (green), entity (orange) and summary (blue) pages&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My wiki after a few weeks, as Trilium’s note map: hubs in violet, concepts green, entities orange, source summaries blue.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;why-trilium-fits-so-well&quot;&gt;Why Trilium fits so well&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;The pattern needs&lt;/th&gt;
&lt;th&gt;Trilium has&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;metadata on every page&lt;/td&gt;
&lt;td&gt;labels and promoted attributes, set by templates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;a graph of linked pages&lt;/td&gt;
&lt;td&gt;internal links and relations, and the &lt;strong&gt;note map&lt;/strong&gt; to look at it&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pages of a few kinds&lt;/td&gt;
&lt;td&gt;templates (hub, concept, entity, source summary)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;“what still needs work?”&lt;/td&gt;
&lt;td&gt;saved searches: pending sources, stubs, drafts, orphans&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;a log of what changed&lt;/td&gt;
&lt;td&gt;the journal’s day note&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;raw sources that stay untouched&lt;/td&gt;
&lt;td&gt;a &lt;code&gt;#readOnly&lt;/code&gt; &lt;em&gt;Sources&lt;/em&gt; subtree&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&quot;how-it-works&quot;&gt;How it works&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;One request sets it up&lt;/strong&gt;: a &lt;em&gt;Schema&lt;/em&gt; note, read-only &lt;em&gt;Sources&lt;/em&gt;, the &lt;em&gt;Wiki&lt;/em&gt;, four templates, saved-search views, two note maps and a lock folder.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The rules live in your Trilium&lt;/strong&gt;: the schema note says how pages are written, linked and reviewed. Claude reads it before every write, and you change the wiki’s conventions by editing that note.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Workflows&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;ingest&lt;/em&gt; a source: Claude writes a summary, updates the concept and entity pages it touches, creates placeholder pages for new topics, and logs the change in the day note;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;query&lt;/em&gt; the wiki;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;lint&lt;/em&gt; it;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;adopt&lt;/em&gt; a finding from a work session.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;You stay the editor&lt;/strong&gt;: Claude writes drafts marked AI-assisted, and only you set a page to reviewed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Safe with several sessions&lt;/strong&gt;: a small write lock (a queue of claim notes) stops two Claude sessions from overwriting each other’s changes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;what-goes-in&quot;&gt;What goes in&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Articles and links.&lt;/strong&gt; I save them to &lt;a href=&quot;https://karakeep.app/&quot;&gt;Karakeep&lt;/a&gt;. A small sync job I wrote, &lt;a href=&quot;https://karakeep-trilium-sync.marceltov.de/&quot;&gt;karakeep-trilium-sync&lt;/a&gt;, puts them under &lt;em&gt;Sources&lt;/em&gt;, and “ingest” does the rest.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;My own chats with Claude.&lt;/strong&gt; At the end of a session I just say “put this in the wiki”. Claude summarizes what we figured out or decided and files it into the pages it belongs to, so a fix, a decision or a “this is how it actually behaves” doesn’t get lost when the chat ends.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;finding-things-again&quot;&gt;Finding things again&lt;/h3&gt;
&lt;p&gt;A wiki is only useful if the assistant actually looks things up. That’s what &lt;a href=&quot;https://trilium-recall.marceltov.de/&quot;&gt;trilium-recall&lt;/a&gt; is for (&lt;a href=&quot;https://marcelbruckner.de/blog/trilium-recall/&quot;&gt;my post about it&lt;/a&gt;): it gives Claude the relevant wiki pages before it answers, and the wiki’s structure helps it rank them, with wiki pages first and sources shown as their summaries. It works on any Trilium, so it has its own post.&lt;/p&gt;
&lt;h3 id=&quot;try-it&quot;&gt;Try it&lt;/h3&gt;
&lt;p&gt;You need Trilium 0.106+ with the MCP server switched on (&lt;em&gt;Options → AI / LLM → MCP server&lt;/em&gt;). Connect it with an ETAPI token or through &lt;a href=&quot;https://trilium-mcp-proxy.marceltov.de/&quot;&gt;trilium-mcp-proxy&lt;/a&gt; (see &lt;a href=&quot;https://github.com/orgs/TriliumNext/discussions/12310&quot;&gt;discussion #12310&lt;/a&gt;).&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-dimmed&quot; style=&quot;background-color:#22272e;color:#adbac7; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin marketplace add Marceltov/trilium-llm-wiki&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin install trilium-llm-wiki&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then ask Claude to “set up the LLM wiki”, drop an article under &lt;em&gt;Sources&lt;/em&gt; and say “ingest”.&lt;/p&gt;
&lt;p&gt;For everyday note work without a wiki (search, create, move, tag, journal, export) there’s &lt;a href=&quot;https://trilium-plugin.marceltov.de/&quot;&gt;trilium-plugin&lt;/a&gt;; both plugins share one connection.&lt;/p&gt;
&lt;p&gt;Feedback is welcome, especially from anyone who runs something similar: how do you structure yours?&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Discussion on GitHub: &lt;a href=&quot;https://github.com/orgs/TriliumNext/discussions/12317&quot;&gt;TriliumNext discussion #12317&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>trilium</category><category>ai</category><category>claude</category></item><item><title>trilium-recall: Claude remembers what you wrote in Trilium</title><link>https://marcelbruckner.de/blog/trilium-recall/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/trilium-recall/</guid><description>If you connect Claude (or any AI assistant) to Trilium, it can search your notes. But it rarely does that on its own. Before starting a task, a model doesn&apos;t stop to ask &quot;do my notes already know something about …</description><pubDate>Mon, 26 Oct 2026 17:43:19 GMT</pubDate><content:encoded>&lt;p&gt;If you connect Claude (or any AI assistant) to Trilium, it can search your notes. But it rarely does that on its own. Before starting a task, a model doesn’t stop to ask “do my notes already know something about this?”, because it doesn’t know what it doesn’t know. So it works out again things you already wrote down, or gets them wrong.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://trilium-recall.marceltov.de/&quot;&gt;trilium-recall&lt;/a&gt;&lt;/strong&gt; fixes that. It’s a small container next to Trilium that indexes your notes and hands the assistant the few lines that matter. It runs as a plain MCP server, so any client can use it.&lt;/p&gt;
&lt;h3 id=&quot;what-it-does&quot;&gt;What it does&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Indexes all your text and code notes&lt;/strong&gt;, with keyword search plus a multilingual embedding model. It handles German and English, so a German note answers an English question. It only reads Trilium through ETAPI, and you can delete its index and rebuild it at any time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Is just an MCP server.&lt;/strong&gt; Add one URL to claude.ai, Claude Code or any other MCP client and you’re done: there’s no plugin and nothing to install on the client. The server’s instructions tell the model when to call &lt;code&gt;recall&lt;/code&gt;. Each call returns up to three short passages with note IDs, or nothing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optional: runs automatically in Claude Code.&lt;/strong&gt; A plugin adds a prompt hook that checks every prompt before Claude sees it. When your notes hold something relevant, Claude starts with it in the context. When they don’t, nothing is added.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;in-numbers&quot;&gt;In numbers&lt;/h3&gt;
&lt;p&gt;Measured on my own Trilium (280 notes, 49 test questions); yours will differ:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&amp;gt; 85 %&lt;/strong&gt; of questions get the right note among the first three. Trilium’s built-in search manages around 40 %, because it needs every word of the question in the note.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;gt; 90 %&lt;/strong&gt; of questions the notes can’t answer get nothing back, instead of three weak guesses.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;lt; 20 ms&lt;/strong&gt; per lookup, typically.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Charts and the full comparison are on the &lt;a href=&quot;https://trilium-recall.marceltov.de/measurements/&quot;&gt;Measurements&lt;/a&gt; page. The repo includes a public test Trilium, so anyone can reproduce the test numbers.&lt;/p&gt;
&lt;h3 id=&quot;running-it&quot;&gt;Running it&lt;/h3&gt;
&lt;p&gt;It’s one compose service next to Trilium, plus an ETAPI token and a password:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-dimmed&quot; style=&quot;background-color:#22272e;color:#adbac7; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8DDB8C&quot;&gt;  trilium-recall&lt;/span&gt;&lt;span style=&quot;color:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8DDB8C&quot;&gt;    image&lt;/span&gt;&lt;span style=&quot;color:#ADBAC7&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt;ghcr.io/marceltov/trilium-recall:latest&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8DDB8C&quot;&gt;    restart&lt;/span&gt;&lt;span style=&quot;color:#ADBAC7&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt;unless-stopped&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8DDB8C&quot;&gt;    environment&lt;/span&gt;&lt;span style=&quot;color:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8DDB8C&quot;&gt;      RECALL_LOGIN_PASSWORD&lt;/span&gt;&lt;span style=&quot;color:#ADBAC7&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt;${RECALL_LOGIN_PASSWORD}&lt;/span&gt;&lt;span style=&quot;color:#768390&quot;&gt;   # openssl rand -hex 32&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8DDB8C&quot;&gt;      RECALL_BASE_URL&lt;/span&gt;&lt;span style=&quot;color:#ADBAC7&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt;https://recall.example.org&lt;/span&gt;&lt;span style=&quot;color:#768390&quot;&gt;       # public URL; turns on the OAuth login&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8DDB8C&quot;&gt;      RECALL_INSTANCES&lt;/span&gt;&lt;span style=&quot;color:#ADBAC7&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt;main&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8DDB8C&quot;&gt;      TRILIUM_MAIN_URL&lt;/span&gt;&lt;span style=&quot;color:#ADBAC7&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt;http://trilium:8080&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8DDB8C&quot;&gt;      TRILIUM_MAIN_TOKEN&lt;/span&gt;&lt;span style=&quot;color:#ADBAC7&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt;${RECALL_ETAPI_TOKEN}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8DDB8C&quot;&gt;    volumes&lt;/span&gt;&lt;span style=&quot;color:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ADBAC7&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt;recall-index:/data&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8DDB8C&quot;&gt;    ports&lt;/span&gt;&lt;span style=&quot;color:#ADBAC7&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ADBAC7&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt;&quot;8082:8082&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then add &lt;code&gt;https://recall.example.org/mcp&lt;/code&gt; to your MCP client and log in once, or send the password as an &lt;code&gt;Authorization: Bearer&lt;/code&gt; header. In Claude Code, for all your projects:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-dimmed&quot; style=&quot;background-color:#22272e;color:#adbac7; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F69D50&quot;&gt;claude&lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt; mcp&lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt; add&lt;/span&gt;&lt;span style=&quot;color:#6CB6FF&quot;&gt; --transport&lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt; http&lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt; trilium-recall&lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt; https://recall.example.org/mcp&lt;/span&gt;&lt;span style=&quot;color:#6CB6FF&quot;&gt; -s&lt;/span&gt;&lt;span style=&quot;color:#96D0FF&quot;&gt; user&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#768390&quot;&gt;# then /mcp → Authenticate, and log in with RECALL_LOGIN_PASSWORD&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;On claude.ai, go to &lt;em&gt;Customize → Connectors → Add custom connector&lt;/em&gt; and use the same URL. That’s the whole setup.&lt;/p&gt;
&lt;p&gt;Optional: if you use Claude Code and want recall on every prompt, without the model deciding when to look:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-dimmed&quot; style=&quot;background-color:#22272e;color:#adbac7; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin marketplace add Marceltov/trilium-recall&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;/plugin install trilium-recall&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Details: &lt;a href=&quot;https://trilium-recall.marceltov.de/how-it-works/&quot;&gt;how it works&lt;/a&gt;, &lt;a href=&quot;https://trilium-recall.marceltov.de/install/&quot;&gt;run the engine&lt;/a&gt;, &lt;a href=&quot;https://trilium-recall.marceltov.de/connect/&quot;&gt;connect Claude&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It started inside my &lt;a href=&quot;https://trilium-llm-wiki.marceltov.de/&quot;&gt;LLM wiki&lt;/a&gt; and understands its structure when there is one, but it works on any Trilium. An embedding model inside Trilium itself seems unlikely given Trilium’s contribution rules (everything must work offline, and the bundle should stay small), so a separate container felt like the right place.&lt;/p&gt;
&lt;p&gt;It’s licensed AGPL-3.0-or-later. Feedback is welcome, and I’d love to hear how it does on other people’s notes: the docs show how to &lt;a href=&quot;https://trilium-recall.marceltov.de/measurements/#measure-your-own&quot;&gt;measure your own&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Discussion on GitHub: &lt;a href=&quot;https://github.com/orgs/TriliumNext/discussions/12316&quot;&gt;TriliumNext discussion #12316&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>trilium</category><category>ai</category><category>claude</category></item><item><title>Hello, blog: how this blog is made</title><link>https://marcelbruckner.de/blog/hello-blog/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/hello-blog/</guid><description>For years my notes have lived in Trilium, and my projects in READMEs and docs sites. What was missing was a place to tell the story around them: why I built something, what I tried first, what broke. This post is …</description><pubDate>Mon, 26 Oct 2026 17:40:00 GMT</pubDate><content:encoded>&lt;p&gt;For years my notes have lived in Trilium, and my projects in READMEs and docs sites. What was missing was a place to tell the story around them: why I built something, what I tried first, what broke. This post is about how that place came about, on the same day as its first two posts.&lt;/p&gt;
&lt;h3 id=&quot;why-a-blog-and-why-like-this&quot;&gt;Why a blog, and why like this&lt;/h3&gt;
&lt;p&gt;I didn’t want to write posts in an editor. I wanted to finish a piece of work and say to Claude: “write a blog post from this”. The conversation already holds the reasoning, the dead ends and the numbers; turning that into a post is exactly the kind of work an assistant does well. My part is the review.&lt;/p&gt;
&lt;p&gt;I looked at a few setups:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Trilium as the CMS.&lt;/strong&gt; My notes are already there, but the site’s build would need a Trilium token in GitHub’s secrets, and nothing in my Trilium is shared publicly on purpose.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ghost.&lt;/strong&gt; A good blog, but another server to run and update.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;notefeed&lt;/strong&gt;, the note feed service I build. A feed is a list of markdown notes with RSS, and anyone can read it through a public API without a key.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;notefeed won. The blog is the feed &lt;a href=&quot;https://notefeed.me/r/marcelbruckner&quot;&gt;notefeed.me/r/marcelbruckner&lt;/a&gt;, and this site shows it at &lt;a href=&quot;https://marcelbruckner.de/blog/&quot;&gt;/blog&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;talking-not-typing&quot;&gt;Talking, not typing&lt;/h3&gt;
&lt;p&gt;Most of what I say to Claude I say out loud. Speech input is fast, but it comes out half-formed: “the thing from yesterday”, “that server”, “like we did for the other repo”. That works because Claude doesn’t only get my words. It reads my second brain, my Trilium with its notes and &lt;a href=&quot;https://marcelbruckner.de/blog/an-llm-wiki-in-trilium/&quot;&gt;an LLM wiki&lt;/a&gt;, and looks up what I mean: which server, which decision, what I tried last time. It is also connected to my GitHub, so it sees the repos, issues and pull requests I’m working on. A rough spoken sentence turns into a precise request, and a post like this one starts from everything that already happened instead of a blank page.&lt;/p&gt;
&lt;h3 id=&quot;how-a-post-gets-here&quot;&gt;How a post gets here&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-mermaid&quot;&gt;flowchart LR
  I[Me: write a post from this] --&amp;gt; C[Claude writes a draft]
  C --&amp;gt; R{I review}
  R -- changes --&amp;gt; C
  R -- post it --&amp;gt; F[(notefeed feed)]
  F -- read API, no secret --&amp;gt; S[Site build]
  S --&amp;gt; B[marcelbruckner.de/blog]
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Drafts first.&lt;/strong&gt; Claude puts the draft in a separate drafts feed and shows me the whole text. Nothing reaches the blog until I say “post it”.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The site pulls the feed.&lt;/strong&gt; An Astro loader reads the posts at build time and renders them with the site’s design, code highlighting and diagrams. A build that can’t reach notefeed fails, so a deploy never goes out without the posts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hourly rebuilds.&lt;/strong&gt; The site checks the feed every hour and deploys only when something changed, so a new post shows up without a push. RSS works twice: on notefeed and at &lt;a href=&quot;https://marcelbruckner.de/blog/rss.xml&quot;&gt;/blog/rss.xml&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;the-skills-behind-it&quot;&gt;The skills behind it&lt;/h3&gt;
&lt;p&gt;The workflow lives in two Claude Code skills. &lt;code&gt;post-to-notefeed&lt;/code&gt; does the writing, the review and the posting for any notefeed feed, and anyone can use it: it ships with notefeed (&lt;a href=&quot;https://docs.notefeed.me/integrations/skills/&quot;&gt;Agent skills&lt;/a&gt;). A second, private skill adds what only this site needs: its tag rules (&lt;code&gt;lang:de&lt;/code&gt; for German posts), the rebuild and the post’s address here.&lt;/p&gt;
&lt;h3 id=&quot;what-didnt-go-smoothly&quot;&gt;What didn’t go smoothly&lt;/h3&gt;
&lt;p&gt;The first deploy failed. notefeed had just renamed a field in its API, and the site’s loader still asked for the old one. A one-line fix, but a good reminder that I am my own API’s first customer. Two things on notefeed’s side are still rough for long posts like this one: tags can’t be changed after posting yet, and notefeed’s own page doesn’t render diagrams. Both are open issues; on this site neither matters.&lt;/p&gt;
&lt;h3 id=&quot;what-comes-next&quot;&gt;What comes next&lt;/h3&gt;
&lt;p&gt;Posts about what I build: AI tools around Trilium, self-hosting, my homelab, notefeed. The first two are about &lt;a href=&quot;https://marcelbruckner.de/blog/trilium-recall/&quot;&gt;trilium-recall&lt;/a&gt; and &lt;a href=&quot;https://marcelbruckner.de/blog/an-llm-wiki-in-trilium/&quot;&gt;an LLM wiki in Trilium&lt;/a&gt;. If you’d like to follow along, the &lt;a href=&quot;https://marcelbruckner.de/blog/rss.xml&quot;&gt;RSS feed&lt;/a&gt; is the easiest way; feedback is welcome through the &lt;a href=&quot;https://marcelbruckner.de/kontakt&quot;&gt;contact form&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>blog</category><category>notefeed</category><category>claude</category></item><item><title>trilium-recall 0.6.0</title><link>https://marcelbruckner.de/blog/trilium-recall-0-6-0/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/trilium-recall-0-6-0/</guid><description>Merge pull request #4 from Marceltov/drop-migrating</description><pubDate>Mon, 26 Oct 2026 15:09:48 GMT</pubDate><content:encoded>&lt;p&gt;Merge pull request #4 from Marceltov/drop-migrating&lt;/p&gt;
&lt;p&gt;Docs: drop the migration page&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;engine-image&quot;&gt;Engine image&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;ghcr.io/marceltov/trilium-recall:0.6.0&lt;/code&gt; — deploy it next to Trilium and
connect Claude Code with the &lt;code&gt;trilium-recall-setup&lt;/code&gt; skill. Guide:
&lt;a href=&quot;https://trilium-recall.marceltov.de/&quot;&gt;https://trilium-recall.marceltov.de/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/Marceltov/trilium-recall/releases/tag/v0.6.0&quot;&gt;The release on GitHub&lt;/a&gt;&lt;/p&gt;
</content:encoded><category>release</category><category>trilium-recall</category><category>trilium-recall-v0.6.0</category></item><item><title>notefeed 0.27.0: post a note with an earlier date</title><link>https://marcelbruckner.de/blog/notefeed-0-27-0/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/notefeed-0-27-0/</guid><description>notefeed 0.27.0 is out.</description><pubDate>Mon, 26 Oct 2026 13:18:24 GMT</pubDate><content:encoded>&lt;p&gt;notefeed 0.27.0 is out.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You can now post a note with a time in the past instead of now, from a date and time with its offset or just a date, back to 1970. The note then sits at that time in the feed, its read link and RSS.&lt;/li&gt;
&lt;li&gt;The compose box has a date-and-time field next to Tags for this. From scripts, send the &lt;code&gt;X-Note-Created&lt;/code&gt; header. The JS client takes &lt;code&gt;createdAt&lt;/code&gt; and &lt;code&gt;notefeed post --created&lt;/code&gt;, the Python client takes &lt;code&gt;created_at&lt;/code&gt; and &lt;code&gt;--created&lt;/code&gt;, and AI assistants can pass &lt;code&gt;created_at&lt;/code&gt; to &lt;code&gt;post_note&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If something polls a feed for notes newer than the last one it saw, it will miss notes posted with an earlier date.&lt;/li&gt;
&lt;li&gt;The footer and the ⓘ menu now link to notefeed’s own release notes and this blog.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All the details are in the &lt;a href=&quot;https://notefeed.me/r/releases/SiC46-foqU1TwdePORt0H3&quot;&gt;release notes&lt;/a&gt; and &lt;a href=&quot;https://github.com/notefeed/notefeed/releases/tag/v0.27.0&quot;&gt;on GitHub&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>release</category><category>v0.27.0</category></item><item><title>trilium-mcp-proxy 0.1.1</title><link>https://marcelbruckner.de/blog/trilium-mcp-proxy-0-1-1/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/trilium-mcp-proxy-0-1-1/</guid><description>Image: ghcr.io/marceltov/trilium-mcp-proxy:0.1.1. Setup: see the README.</description><pubDate>Mon, 26 Oct 2026 13:16:07 GMT</pubDate><content:encoded>&lt;p&gt;Image: &lt;code&gt;ghcr.io/marceltov/trilium-mcp-proxy:0.1.1&lt;/code&gt;. Setup: see the README.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/Marceltov/trilium-mcp-proxy/releases/tag/v0.1.1&quot;&gt;The release on GitHub&lt;/a&gt;&lt;/p&gt;
</content:encoded><category>release</category><category>trilium-mcp-proxy</category><category>trilium-mcp-proxy-v0.1.1</category></item><item><title>notefeed 0.26.0: notes as you wrote them</title><link>https://marcelbruckner.de/blog/notefeed-0-26-0/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/notefeed-0-26-0/</guid><description>notefeed 0.26.0 is out.</description><pubDate>Mon, 26 Oct 2026 11:19:52 GMT</pubDate><content:encoded>&lt;p&gt;notefeed 0.26.0 is out.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A note now shows its text exactly as you wrote it. notefeed used to take the first line as the title and leave it out of the text; now only a title you set yourself shows as a heading above the note.&lt;/li&gt;
&lt;li&gt;Click anywhere on a note to open it.&lt;/li&gt;
&lt;li&gt;RSS readers now show a note as formatted text with its pictures instead of raw markdown, and its first picture is the item’s image.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All the details are in the &lt;a href=&quot;https://notefeed.me/r/releases/mFT4hkgnkym1SZ1uCK37Dj&quot;&gt;release notes&lt;/a&gt; and &lt;a href=&quot;https://github.com/notefeed/notefeed/releases/tag/v0.26.0&quot;&gt;on GitHub&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>release</category><category>v0.26.0</category></item><item><title>trilium-llm-wiki 0.4.1</title><link>https://marcelbruckner.de/blog/trilium-llm-wiki-0-4-1/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/trilium-llm-wiki-0-4-1/</guid><description>Merge pull request #11 from Marceltov/trilium-llm-wiki-10-recall-first-lookups</description><pubDate>Mon, 26 Oct 2026 09:25:20 GMT</pubDate><content:encoded>&lt;p&gt;Merge pull request #11 from Marceltov/trilium-llm-wiki-10-recall-first-lookups&lt;/p&gt;
&lt;p&gt;TRILIUM-LLM-WIKI #10: Look things up recall-first, without loading the schema&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;recall-engine-image&quot;&gt;Recall engine image&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;ghcr.io/marceltov/trilium-llm-wiki-recall:0.4.1&lt;/code&gt; — deploy it next to Trilium and
connect the plugin with the &lt;code&gt;trilium-recall-setup&lt;/code&gt; skill. Guide:
&lt;a href=&quot;https://trilium-llm-wiki.marceltov.de/recall/&quot;&gt;https://trilium-llm-wiki.marceltov.de/recall/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/Marceltov/trilium-llm-wiki/releases/tag/v0.4.1&quot;&gt;The release on GitHub&lt;/a&gt;&lt;/p&gt;
</content:encoded><category>release</category><category>trilium-llm-wiki</category><category>trilium-llm-wiki-v0.4.1</category></item><item><title>karakeep-trilium-sync 0.1.0</title><link>https://marcelbruckner.de/blog/karakeep-trilium-sync-0-1-0/</link><guid isPermaLink="true">https://marcelbruckner.de/blog/karakeep-trilium-sync-0-1-0/</guid><description>Add a setup guide</description><pubDate>Fri, 16 Oct 2026 13:12:24 GMT</pubDate><content:encoded>&lt;p&gt;Add a setup guide&lt;/p&gt;
&lt;p&gt;Co-Authored-By: Claude Opus 5.5 &lt;a href=&quot;mailto:noreply@anthropic.com&quot;&gt;noreply@anthropic.com&lt;/a&gt;
Claude-Session: &lt;a href=&quot;https://claude.ai/code/session_01QH9FSBayyUwfMTcRvoTAJA&quot;&gt;https://claude.ai/code/session_01QH9FSBayyUwfMTcRvoTAJA&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/Marceltov/karakeep-trilium-sync/releases/tag/v0.1.0&quot;&gt;The release on GitHub&lt;/a&gt;&lt;/p&gt;
</content:encoded><category>release</category><category>karakeep-trilium-sync</category><category>karakeep-trilium-sync-v0.1.0</category></item></channel></rss>