- Distributed under GNU General Public License Version 3.
- Change log.
- This README.md is just boilerplate for the wiki.
Parameters
--bind: The ip/interface where suvi listens at. [default: 0.0.0.0]
--port: The listening port. [default: 8080]
--enforce / --no-enforce: Require a login [default: no-enforce]
--admin-login: Username for the admin user [default: admin]
--admin-password: Password for the admin user
--user-login: Username for the standard user [default: user]
--user-password: Password for the standard user
--secret-key: Key used to sign the session cookie. If unset, it is derived from the configured logins and passwords
--session-days: How long a cookie login stays valid, in days; 0 keeps the login only until the browser is closed [default: 30]
--tasks: Where to look for task config files (.json files) [default: ./tasks]
--cycle: Update interval in seconds to look for new/deleted task config files [default: 10]
--logs: Directory where to store suvi and task log files. [default: ./log]
--log-rotate-when: When to rotate log files (H for hours, D for days or midnight) [default: midnight]
--log-rotate-interval: How many instances fo when have to pass before rotating the log file [default: 1]
--log-backup-count: How many file rollovers should be stored [default: 5]
--url-prefix: Sub path suvi is published below by a reverse proxy, i. e. /suvi. Empty means suvi lives at the root of its host. [default: ``]
--url-scheme: Scheme the clients use to reach suvi, `http` or `https`. Set it to `https` when a reverse proxy terminates TLS so the session cookie is marked `Secure`. [default: http]
`--trusted-proxy`: IP of the reverse proxy whose `X-Forwarded-*` headers suvi is allowed to trust. Leave unset if suvi is reached directly.
`--threads`: How many requests suvi serves at the same time. The auto-reloading pages keep one thread busy each. [default: 8]
`--help`: Show help message and exit.
Using environment vars to configure suvi
Parameters can be set via environment vars, example:
#/bin/bash
PW1=$(pwmake 80)
PW2=$(pwmake 80)
echo Setting admin password to "$PW1" and user password to "$PW2".
SUVI_ENFORCE=True \
SUVI_ADMIN_LOGIN=admin \
SUVI_ADMIN_PASSWORD="$PW1" \
SUVI_USER_LOGIN=user \
SUVI_USER_PASSWORD="$PW2" \
suvi
Using suvi.toml to configure suvi
Parameters can also be set by a suvi.toml file:
bind = "0.0.0.0"
port = 8080
enforce = true
admin_login = "admin"
admin_password = "RamesesII"
user_login = "user"
user_password = "TrustNo1"
session_days = 30
tasks = "./tasks"
cycle = 5
logs = "./log"
log_rotate_when = "midnight"
log_rotate_interval = 1
log_backup_count = 5
url_prefix = ""
url_scheme = "http"
threads = 8
The values of the configuration file are overwritten by console values. For windows service deployments, suvi.toml is expected at %WINDIR%\system32.
Task config files (.json)
type: Defines the startup strategy"type": "ondemand": Run the task on user interaction/get call."type": "keepalive": Automatically start the task with suvi and restart if necessary."type": "schedule": Automatically start the task with suvi and restart if necessary.
exec: Defines how to start the task"exec": "system": Starts an external executable viapopen"exec": "shell": Starts an external executable viapopenin the current system shell.- The "
args" list should be joined and instead just separated by spaces for the shell to interpret the command.
- The "
"exec": "stop": Stops (= kill & reload) tasks by config file name i. e. on a schedule- Example:
{ "type": "schedule", "schedule": "* 0 * * *", "exec": "stop", "args": [ "has-to-restart-sometimes" ], "cwd": "/tmp" } "args"may contain one or more config files names without the json extension
- Example:
"exec": "talend": Deflates & starts a talend job build to a zip package- When using
"talend"for"exec", this additional config parameters exist:"package": Path to the talend build zip file."java": Optional path to the java binary. When this path to thejavabinary is omitted, the system default will be used.
- The
cwdparameter is used as base path for deflated jobs. Whencmdis omitted, the system default temp path is used instead. - Example:
{ "type": "keepalive", "exec": "talend", "package": "/jobs/talend-demo-job-with-subtask.zip", "args": ["--context=Test", "-Xms256M", "-Xmx1024M"], "cwd": "/tmp", "info": "deflate and keepalive talend demo job" }
- When using
args: Array of startup params or an array of arrays it multiple programs should be started if the previous job succeeded"args": ["notepad.exe", "test.txt"]"args": [ ["notepad.exe", "test.txt"], ["calc.exe"] ]
cwd: Optional startup path for the task"cwd": "C:/temp"
env: Optional dictionary that extends/overwrites suvis environment variables"env": {"TAIL_FILE": "/tmp/test"}, "args": ["bash", "-c", "tail -f $TAIL_FILE"]
schedule: Read when"type": "schedule"is set to launch an instance of the task if not already running.- minutes, hours, days, month, weekdays
"schedule": "0 */4 * * 1-3,5": Start every four hours Monday to Wednesday and Friday.- Minutes range from
0to59 - Hours range from
0to23 - Days range from
1to31 - Month range from
1(Jan) to12(Dec) - Weekdays range from
1(Mon) to7(Sun) including0(also Sun) - Every field takes
*, a single value, a list (1,5,7), a range (1-5), a range with a step (1-23/2), a start value with a step (5/15) or*/n - Months and weekdays also accept english names, i. e.
jan,january,monormon-fri - Elements that cannot be read are written to the log and never match, the remaining elements of the schedule keep working
- Two details differ from vixie cron, so a schedule copied from a
crontabcan fire on other days:*/ncounts from0instead of from the first value of the field.0 0 */2 * *runs on the even days of a month, vixie cron runs it on the odd ones.0 0 1 */3 *runs in Mar, Jun, Sep and Dec, vixie cron runs it in Jan, Apr, Jul and Oct. Spell the field out as2-30/2or3,6,9,12to keep the suvi reading, or as1-31/2and1,4,7,10to get the vixie cron one.- A schedule that restricts the day and the weekday runs only when both match, while vixie cron
runs it when either one matches.
0 0 13 * 5therefore means "Friday the 13th" in suvi and "every 13th of a month plus every Friday" in vixie cron.
tokens: Optional list of secret tokens to start a tasks without a password via HTTP GET or POST at/run/hook/<token>- Example:
"tokens": ["30d827f9-e22f-4b6a-85f1-bcb9977c6155", "69f541f8-614a-45f4-950b-67998c819ee0"] - When POSTing to a webhook of
"exec": "system", the raw body gets redirected to STDIN of the (first)"args"command. - The token is never written into the log, which names its position in
tokensinstead, i. e.hook token #1.
- Example:
info: Optional markdown text to provide task info.- Line breaks have to be encoded as
\nin JSON.
- Line breaks have to be encoded as
Environment variables of tasks
The environment variables for the runtime of a task consist of:
SUVI_TASK_NAMEset to the task name.SUVI_EXEC_UUIDset to a unique uuid for each task execution. This uuid is unchanged between executions of subtasks (whenargsis a list is lists).- Variables set by the OS
- Variables set by
envtask configuration.
Log files
The log pages keep the last 1000 lines of each log in memory. The files suvi writes to --logs, the rotated ones included, are listed behind the files icon of the global log and every task log page and served as well:
/logfiles.json: Lists the log files of suvi and of every task config file withname,log,sizein bytes andmodified./logfiles/<log>: Lists the files of one log, i. e./logfiles/suvior/logfiles/<task name>./logfile/<name>: Shows a log file as plain text, i. e./logfile/suvi.logor/logfile/suvi.log.2026-09-27./logfile/<name>?download: Downloads the log file.
All of them need the user login. Other files in the log directory are never served.
Metadata
Release files for suvi 2.11.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| suvi-2.11.0.tar.gz | 2.6 MB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| suvi-2.11.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 3.0 MB
Release files / suvi-2.11.0.tar.gz
| Download URL | suvi-2.11.0.tar.gz |
|---|---|
| Size | 2.6 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
50e71adbefaf32d2def3384c063b8e161dd6e515aeb24ebd13f70b65d0e8b063
|
|
BLAKE2b-256 checksum How to use checksums |
28dd8b124549f1bdd3d108561dce934d276f3726834792535e2c916f698b19c8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.17
|
Release files / suvi-2.11.0-py3-none-any.whl
| Download URL | suvi-2.11.0-py3-none-any.whl |
|---|---|
| Size | 411.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
44e88bd2d84ef06f5c38a219a359ab5c23eebe027119989c61bd65dc9f66e904
|
|
BLAKE2b-256 checksum How to use checksums |
9be2861d7b3864d87a41a04201d6ce698abe72142987e29cd64ad70ab795032a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.17
|
Security for suvi 2.11.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.