Skip to main content

Crate sioul

Crate sioul 

Source
Expand description

sioul: the Porch, projects, admin windows, budgets and mail accounts, from the terminal.

The terminal is the first interface because agents and scripts use it too; the Qt interface comes on top of the same core (docs/roadmap.md). Every sentence goes through the translator: the language is the configuration’s, else the session’s (docs/i18n.md).

This crate is crates/sioul-cli in the repository; the program it builds, and so this reference, are named sioul. It decides nothing itself: it reads and judges with sioul-core, reaches servers with sioul-sync, and prints. sioul --help, or sioul <command> --help, says what each command takes.

§Where to start reading

  • Command: one variant per command (sioul porch, sioul tasks …). Its comments are also the help the program prints, through clap. Cli holds the options every command takes.
  • main: reads the command line, makes the Session (the configuration, where it lives, the language), then runs the command.
  • The commands that have commands of their own are in the modules below; the others (sioul porch, sioul budgets, sioul block…) are functions of this file, named after them (porch_command).

Names such as docs/mcp.md are the design notes in the repository’s docs/ folder. The website shows them too, under the same name: https://sioul.aurelienpierre.com/dev/mcp.html.

§Modules

  • accounts: mail accounts and sync: sioul account …, sioul sync, sioul watch.
  • mail: the mail client: sioul mail folders | list | act | send.
  • pgp: OpenPGP keys: sioul pgp list | make | import | export | lookup.
  • dav: contacts and calendars: sioul dav …, sioul contacts, sioul agenda, sioul event.
  • tasks: tasks, notes, links and focus: sioul tasks …, sioul focus …, sioul notes, sioul links.
  • remind: reminders before dates: sioul remind, and --watch with the window closed.
  • mcp: sioul mcp, what Sioul keeps served to AI agents over the Model Context Protocol.
  • spam: sioul spam, the spam filter learned on this computer (docs/spam-filter.md); computers only.

Modules§

accounts 🔒
Mail accounts and sync, from the terminal: sioul account …, sioul sync, sioul watch.
dav 🔒
Contacts and calendars from the terminal: sioul dav add|sync, sioul contacts, sioul contact, sioul agenda, sioul event.
mail 🔒
The mail client from the terminal: sioul mail folders | list | act | send. The window offers the same with “Undo” before anything reaches the server; here, a command is already a deliberate act.
mcp 🔒
sioul mcp: what Sioul keeps on this computer, served to AI agents over the Model Context Protocol (https://modelcontextprotocol.io, revision 2025-06-18), on standard input and output, as Claude Code and Claude Desktop start it (docs/mcp.md).
pgp 🔒
OpenPGP keys from the terminal: sioul pgp list|make|import|export|lookup|cards.
remind 🔒
sioul remind: reminders before dates (docs/reminders.md), listed, or told with Sioul’s window closed (--watch, started with the session when asked on the Parameters page). The window tells the same ones; each is marked when told, so it is told once, whichever runs.
spam 🔒
sioul spam: the spam filter learned on this computer (crates/sioul-learn).
tasks 🔒
Tasks, notes, links and focus from the terminal: the next step and why, the list, the board, the timeline; adding a task in one line; importing a whole plan from a file (for agents and scripts); following links.

Structs§

Cli 🔒
Session 🔒
What every command needs: the configuration, where it lives, and the language.

Enums§

Command 🔒

Functions§

block_command 🔒
budgets_command 🔒
card_command 🔒
date 🔒
done_command 🔒
hidden 🔒
A control character (escape sequences start with one), or a mark that turns text right to left: never printed.
load_store 🔒
main 🔒
one_line 🔒
Words from elsewhere (mail, invitations, contacts, file names) on one line, as they are shown: a line break or a tab becomes a space, and the other control characters go (a terminal’s escape sequences, the marks that turn text right to left), so that they can neither break a line of what is shown, nor pass for it, nor drive the terminal.
plain_lines 🔒
Words from elsewhere that keep their lines (a task’s notes, what a server answered): line breaks and tabs stay, the other control characters go, as in one_line.
porch_command 🔒
print_closed_porch 🔒
print_indented 🔒
The first line of a block at two spaces, its follow-ups at four.
print_lane 🔒
print_mail_lines 🔒
Mail about money, from every account (or the folders given), and what becomes of it.
print_open_porch 🔒
print_right_now 🔒
The one exception to the windows: verified codes, shown whatever the time.
projects_command 🔒
session_language 🔒
The session’s language: its variables (LC_ALL, LC_MESSAGES, LANG) when it has them, as in a Linux terminal; else the system’s own setting, as Windows’ and macOS’ terminals may set none (as sioul-app’s backend.rs).
shield_command 🔒
sources 🔒
The configured accounts’ mail, or the folders given instead.
system_locale 🔒
Elsewhere the session’s variables say it all.
unblock_command 🔒
verify_command 🔒
window_command 🔒