About Antenna

What and How

This is a feed aggregator with a twist. It doesn't have a list of feeds that it repeatedly checks. Instead it takes feed URLs as user input and puts them in a queue. The queue is checked every five minutes, and an attempt to ingest each feed is made. Once a feed has been ingested it's removed from the queue and thus forgotten.

If you want an Atom, RSS, gemsub, or twtxt feed featured here then call gemini://warmedal.se/~antenna/submit?<URL to your feed> each time it's updated! This way Antenna will only fetch feeds that are active. No more useless hammering of dead feed files.


The URL to a twtxt file is submitted the same way as any other feed, but twtxt posts end up on their own page in order to not clutter the gemlog listing.

Here's the gmi page for twtxt posts.

And here's a plain text version, similar to the output from a twtxt registry.

A common convention in the twtxt world is to add metadata in comments (lines beginning with #), such as a description or avatar URL. Antenna recognizes one such data field:

This is not by any means mandatory. In its absence the URL to the file will be written twice instead, since it's used for both the nickname field and the URL field. It is the only way to inform Antenna of your preferred nick, however.

Common Errors and Trip-ups

Keep in mind that this service runs on limited hardware, and that my internet connection historically has had a whole lot of issues. And that I'm learning python3 as I go. If a feed you submitted once didn't show up it's likely that Antenna failed to fetch or parse it, and the error checks and recovery I have in place are insufficient.

Some common errors that make Antenna fail include:


"But, ew0k, I don't have control over my publishing flow! I'm on a hosted service, or using a tool I can't modify."

Fear not! As the submission call is always the same, and you don't even need an Atom/RSS feed, you can just follow this superb advice:

"[...] have an unlisted page on your gemlog that has a link to antenna with the querystring pre-populated" - ~palm93

"I have this one long page that I update with new microblog entries, and it doesn't follow any of those formats. What do I do?"

Well, let's say you have a page /microblog.gmi then make another (let's say /feed.gmi) with something like this content:

Update the timestamp when you've added something to /microblog.gmi and submit the URL to /feed.gmi to Antenna.

"The ordering of entries sometimes change a bit randomly."

Yes and no. The page is regenerated whenever it has fetched and parsed a feed, even if it already had all those entries. Gemsub entries only have a date, meaning that all entries fetched from gemsub feeds marked with the same date have no specific order relative to each other. It depends on how SQLite3 gives them back when sorting by timestamp.


Use this service responsibly. I take the liberty to refrain from fetching feeds or display entries from URLs that I or someone I trust have found unsavory, hateful, illegal, harmful, or just gives me really bad vibes. This is a fun passion project for me; I'll keep it up as long as I still find it fun, and I'll try to keep it fun for myself. If you submit a feed and find that it never updates this could be why. Remember that there's a human factor here, and I can't guarantee that I'll be consistent or correct in my judgements.

Reach out to me if you have questions or suspect human errors or bugs in the process!

bjorn.warmedal@gmail.com or ew0k@tilde.team



(You can check the tail of the log if you like)

Proxied content from gemini://warmedal.se/~antenna/about.gmi (external content)

Gemini request details:

Original URL
Status code
text/gemini; lang=en
Proxied by

Be advised that no attempt was made to verify the remote SSL certificate.