SYSTEMD-STDIO-BRIDGE(1)

๐Ÿ’– SYSTEMD-STDIO-BRIDGE(1) ๐Ÿ’–

okay bestie, so this is the manual page for systemd-stdio-bridge from the systemd crew โ€” and no cap, it's basically a little matchmaker for D-Bus connections. let's get into it ๐Ÿซถ


โœจ NAME โœจ

systemd-stdio-bridge โ€” a D-Bus proxy, that's the whole job description ๐Ÿ’…


๐ŸŒธ SYNOPSIS ๐ŸŒธ

systemd-stdio-bridge [OPTIONS...]

๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

so what does it actually do? systemd-stdio-bridge implements a proxy between STDIN/STDOUT and a D-Bus bus. the way it works is: when it starts up, it expects to receive an open connection via STDIN/STDOUT, and then it goes and creates a brand-new connection to the bus you told it to use. after that it just forwards messages back and forth between the two connections like the most reliable group-chat admin you've ever met ๐Ÿ’Œ

this program is literally built for socket activation: that first connection can be a pipe or a socket, and it must be passed either as standard input, or as an open file descriptor following the protocol described in sd_listen_fds(3).

the second connection? by default it goes to the local system bus, but you can influence that whole situation with the --user, --system, --machine=, and --bus-path= options described down below ๐Ÿ‘‡

oh and also โ€” sd-bus(3) uses systemd-stdio-bridge to forward D-Bus connections over ssh(1), or to connect to the bus of a different user. see sd_bus_set_address(3). iconic behavior honestly โœจ


๐ŸŽ€ OPTIONS ๐ŸŽ€

here's everything it understands, bestie. the following options are understood:

  • --user โ€” talk to the service manager of the calling user, rather than the service manager of the system. it's giving "my stuff, my rules" ๐Ÿ’
  • --system โ€” talk to the service manager of the system. this is the implied default, so if you say nothing, this is what you get.
  • -M, --machine= โ€” execute the operation on a local container. you specify a container name to connect to, and you can optionally prefix it with a user name to connect as, plus a separating "@" character. if you use the special string ".host" in place of the container name, a connection to the local system is made (which is genuinely useful if you wanna connect to a specific user's user bus, like: "--user --machine=lennart@.host"). if you don't use the "@" syntax, the connection is made as root user. if you do use the "@" syntax, either the left hand side or the right hand side may be omitted (but not both), and in that case the local user name and ".host" are implied. so many little rules, but they all slay ๐Ÿงš
  • -p PATH, --bus-path=PATH โ€” path to the bus address. default: "unix:path=/run/dbus/system_bus_socket"
added in version 251 โญ
  • -q, --quiet โ€” suppresses error logging on failure. silence is golden, bestie ๐Ÿคซ
added in version 259 โญ
  • -h, --help โ€” print a short help text and exit. the "just tell me what to do" button.
  • --version โ€” print a short version string and exit. the "who even are you" button.

๐Ÿ’€ EXIT STATUS ๐Ÿ’€

on success, 0 is returned. a non-zero failure code otherwise. that's it, that's the whole vibe check โ€” zero means we ate, anything else means we did not ๐Ÿ˜ญ


๐ŸŒˆ SEE ALSO ๐ŸŒˆ


๐Ÿ“ NOTES ๐Ÿ“

  1. D-Bus https://www.freedesktop.org/wiki/Software/dbus

and that's the whole page, bestie!! this one's from systemd 262.1 โ€” go forth and proxy those D-Bus connections, you absolute main character ๐Ÿ‘‘๐Ÿ’–

๐Ÿ“ฆ where this page comes from
  • arch rolling: systemd 262.1-1 ยท LGPL-2.1-or-later AND CC0-1.0 AND GPL-2.0-or-later AND MIT-0
  • ๐Ÿ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms