An all-in-one utility for managing feeds. Slipstream is a feed fetcher, filterer, and aggregator.
| Utility | Result |
|---|---|
slipstream serve |
Fetch remote feeds from a configuration file and serve over http (HTML/ATOM) |
slipstream read |
Fetch and read feeds in a local tui |
slipstream fetch |
Fetch a remote feed and template the results |
slipstream config |
Verify config, import and export feeds |
slipstream is a command-line application for serving filtered/aggregated feeds
from existing feeds a la Yahoo Pipes. A simple configuration file (e.g.
slipstream.toml) is used to define feeds,
filters, and aggregations.
The original goal of slipstream serve was to support a single, self-hostable
service that can aggregate feeds across devices. No need to share opml files
across desktops, phones, and laptops-- all feeds can be accessible from a single
new aggregate atom feed. Slipstream supports basic filters for allowlisting and
blocklisting entries from feeds based on substrings and tags. Everything
slipstream serve supports, slipstream read also supports.
- Fetch entries from various sources (rss, atom, mastodon)
- Filter entries based on various criteria (allowlist/blocklist tags and substrings)
- Apply & transform tags (aliases)
- Make new aggregate feeds (composite feeds, matching tags)
- Serve feeds via HTML and Atom (
slipstream serve) - View the feeds locally with terminal reader (
slipstream read)- Handle custom keybindings and compound commands
- Display custom colors & flags based on tag matches
- Execute shell commands and page the result (archival, fetching)
- Command execution and result storage
cargo install slipstream-cli
Running slipstream --config <your-config.toml> serve --port <your-port> will
start a web server that exposes the following endpoints:
| Endpoint | Description | Format |
|---|---|---|
/config |
View the config | toml |
/all |
View all entries | html |
/all/feed |
View all entries | atom |
/feed/<feed_name> |
View entries in feed | html |
/feed/<feed_name>/feed |
View entries in feed | atom |
/tag/<tag_name> |
View entries matching tag | html |
/tag/<tag_name>/feed |
View entries matching tag | atom |
An example can be found at my personal website feeds.hachha.dev.
Running slipstream --config <your-config.toml> read will launch a local tui.
Check out the example config to see additional configuration options.
Running slipstream fetch <feed-name> <feed-url> --template json will fetch a
feed and return a JSON object that can be used
slipstream-cli- Simple CLIslipfeedserver and reader utilizing a simple config.slipstream-feeds(slipfeed) - Feed fetcher, filterer, transformer, and aggregator library.
globaltransformstag-derivastions
filtersoptions
hooksEvent-based actionson-fetch- commands run when after feed is fetchedon-insert- commands run when an entry is insertedon-update- commands run when an entry is updatedon-read- commands run when an entry is readon-tag- commands run when an entry is tagged
commandsCustom commands for reading or hooks (Referenced by!)nameCommand namecommandArray of arguments- Arguments substitute several fields (exact matches)
{{link.url}}- URL of entry source{{link.url<N>}}- URL of Nth entry source{{link.name}}- Name of link{{link.name_}}- Name of link, substituting special characters for underscores{{link.name-}}- Name of link, substituting special characters for dashes{{feed}}- Feed of entry{{terminal.width}}- Width of current terminal
- Arguments substitute several fields (exact matches)
serveportPort to bind tocacheHow long to cache returned items
feeds<feed>- For standard syndications (RSS/ATOM), set
urlas the HTTP endpoint for the feed - For tag aggregates, set
tag-allowlistandtag-blocklist - For feed aggregates, set
feeds - Feeds additionally support adding-to/overriding the transforms, filters, and options from the global settings
stepThe phase of fetching to update feed-- this is set automatically depending on feed type but may be overridden
- For standard syndications (RSS/ATOM), set
readscrollScroll speed (lines)priorityTags in order of prioritytagscolorsMapping of tag to color or flag, in order of reverse-priority
bindingMap of keybind to command- Can reference standard read command literals (e.g.,
noop,up,page-down) - Can reference manual read command-mode commands (e.g.,
:toggle-tag important,:search --tag read-later) - Can reference configured user commands (e.g.,
!archive,!email)
- Can reference standard read command literals (e.g.,
While the slipstream-feeds and slipstream-cli APIs may not be stable, they
are essentially complete as-is.
slipstream(api)- Allow syncing tags & command results from client to server
slipstream-feeds- Custom HTML selector feeds
- JSON feeds
slipstream-cli(read)- Better pagination and search
- Indicate pending updates
Simple bug fixes and suggestions are welcome. At this time, more in-depth contributions will likely be rejected unless discussed ahead-of-time.

