5 releases (3 stable)

2.0.0 Sep 6, 2024
2.0.0-beta.1 Aug 28, 2024
1.8.1 Aug 11, 2024
1.8.0 Aug 9, 2024

#318 in HTTP client

Download history 224/week @ 2024-08-07 46/week @ 2024-08-14 5/week @ 2024-08-21 125/week @ 2024-08-28 218/week @ 2024-09-04 43/week @ 2024-09-11

393 downloads per month
Used in 3 crates (2 directly)

MIT license

455KB
10K SLoC

Slumber

Test CI crates.io Sponsor

Slumber example

Slumber is a TUI (terminal user interface) HTTP client. Define, execute, and share configurable HTTP requests. Slumber is built on some basic principles:

  • It will remain free to use forever
  • You own your data: all configuration and data is stored locally and can be checked into version control
  • It will never be enshittified

Features

Examples

Slumber is based around collections. A collection is a group of request recipes, which are templates for the requests you want to run. A simple collection could be:

# slumber.yml
requests:
  get: !request
    method: GET
    url: https://httpbin.org/get

  post: !request
    method: POST
    url: https://httpbin.org/post
    body: !json { "id": 3, "name": "Slumber" }

Create this file, then run the TUI with slumber.

For a more extensive example, see the docs.


lib.rs:

App configuration. Some config fields apply to core functionality, while some are interface-specific. While it's maybe not the "best" design, we compile them all into one crate to give consistent behavior between the CLI and TUI. Specifically, it allows the slumber show config command to show exactly what the TUI is actually using.

The downside of this is we have to pull in some types that are specific to the TUI, because they relate to configuration. By putting this in a separate crate, instead of the core crate, it at least pushes those dependencies down the compile chain a bit further.

Dependencies

~41–57MB
~1M SLoC