# splam > Shiny for Python app for Linux administration ## Docs ### API Reference - [add_highlight_keyword](https://mjfrigaard.github.io/splam/reference/add_highlight_keyword.html): Persist a custom keyword/phrase to highlight class mapping - [add_user](https://mjfrigaard.github.io/splam/reference/add_user.html): Add or replace a user's salted password hash and role - [attempt_login](https://mjfrigaard.github.io/splam/reference/attempt_login.html): Verify credentials subject to failed-attempt lockout - [build_client](https://mjfrigaard.github.io/splam/reference/build_client.html): Return a chatlas client seeded with the admin-task notes for `services` - [chat_available](https://mjfrigaard.github.io/splam/reference/chat_available.html): Return True when the optional `chat` extra is installed - [doc_columns](https://mjfrigaard.github.io/splam/reference/doc_columns.html): Return the man page width in columns that fills `width_px` of screen - [doc_references](https://mjfrigaard.github.io/splam/reference/doc_references.html): Return the URIs listed in the unit's `Documentation=` property - [get_all_service_info](https://mjfrigaard.github.io/splam/reference/get_all_service_info.html): Return built-in SERVICE_INFO merged with user-saved overrides (overrides win) - [get_documentation](https://mjfrigaard.github.io/splam/reference/get_documentation.html): Return `systemctl help `: the man pages named by Documentation= - [get_logs](https://mjfrigaard.github.io/splam/reference/get_logs.html): Return the last `lines` journalctl entries for `service`, newest first - [get_role](https://mjfrigaard.github.io/splam/reference/get_role.html): Return a user's role, or `DEFAULT_ROLE` for records saved before roles existed - [get_service_info](https://mjfrigaard.github.io/splam/reference/get_service_info.html): Return admin-task notes for a service, falling back to generic guidance - [get_status](https://mjfrigaard.github.io/splam/reference/get_status.html): Return combined stdout/stderr of `systemctl status ` - [highlight](https://mjfrigaard.github.io/splam/reference/highlight.html): Escape `text` and wrap known (and user-added) keywords in colored spans - [highlight_term](https://mjfrigaard.github.io/splam/reference/highlight_term.html): Escape `text` and wrap case-insensitive matches of `term` in - [list_services](https://mjfrigaard.github.io/splam/reference/list_services.html): Return sorted service names known to systemd that have admin-task notes - [load_users](https://mjfrigaard.github.io/splam/reference/load_users.html): Load the credentials file, or an empty dict if it doesn't exist yet - [lockout_remaining](https://mjfrigaard.github.io/splam/reference/lockout_remaining.html): Return whole seconds left on `username`'s lockout, or 0 if it isn't locked - [record_action](https://mjfrigaard.github.io/splam/reference/record_action.html): Append a timestamped audit entry for a service control action - [record_auth](https://mjfrigaard.github.io/splam/reference/record_auth.html): Append a timestamped audit entry for a login or logout attempt - [read_audit_log](https://mjfrigaard.github.io/splam/reference/read_audit_log.html): Return the most recent audit entries, newest first, optionally filtered by service - [read_only_tools](https://mjfrigaard.github.io/splam/reference/read_only_tools.html): Return the read-only functions a chat client may call - [redact](https://mjfrigaard.github.io/splam/reference/redact.html): Replace anything secret-shaped in a shell command line with `[REDACTED]` - [save_service_info](https://mjfrigaard.github.io/splam/reference/save_service_info.html): Persist a user-edited admin-task entry for `service`, overriding any built-in entry - [system_prompt](https://mjfrigaard.github.io/splam/reference/system_prompt.html): Build a system prompt covering every service discussed so far - [systemctl_action](https://mjfrigaard.github.io/splam/reference/systemctl_action.html): Run `systemctl ` and return the completed process - [verify_user](https://mjfrigaard.github.io/splam/reference/verify_user.html): Check a username/password pair against the stored hash