# FAQ

Resources, data, platforms, agent security, sign-in, configuration, and extending kogut.

## Memory use

See the [measurements](https://docs.kogut.dev/introduction/what-is-kogut/#resource-use). Use depends on what
you monitor and how you use the panel.

## Database choice

SQLite needs no database server. kogut uses one writer with group commits and rolls raw
data into summaries. Backups run without stopping the server. See
[Backups and restore](https://docs.kogut.dev/high-availability/backups/).

## Data location

The install script and the NixOS module use `/var/lib/kogut`. Docker uses `/data` in the
`kogut-data` volume. The directory holds `kogut.db`, its write-ahead log, configuration,
and the setup token until the first account exists. Change the paths with
[environment variables](https://docs.kogut.dev/reference/environment-variables/). See
[What to back up](https://docs.kogut.dev/high-availability/backups/#what-to-back-up).

## Supported platforms

The release binaries are for Linux on x86_64 and aarch64. On Windows or macOS, run the
server in Docker. The agent monitors Linux hosts only; checks can monitor other machines
from outside.

## Agent security

The agent only connects out and opens no port. It requires HTTPS, except for loopback
and Tailscale addresses or when you allow plain HTTP. The server can assign it checks,
such as HTTP or ping, and ask for recent log lines of a service. It cannot make the agent
run a program or a command: the agent runs only what is built in or set on the host, such
as the [command checks](https://docs.kogut.dev/agent/command-checks/) in its own file.

Each host has its own token. The panel shows it once, the server stores only its SHA-256
hash, and you can replace it at any time. The agent keeps unsent data on disk for up to
one hour or 20 MiB, then drops the oldest. The server acknowledges a batch only after
storing it and its sequence number, so a batch sent twice counts once.

See [Agents and service isolation](https://docs.kogut.dev/security/#agents-and-service-isolation) and
[Agent permissions](https://docs.kogut.dev/agent/permissions/) for Docker socket access.

## Scripted or browser checks

kogut has no script, browser, or remote command checks, and will not add them: code a
server sends to its probes becomes remote code execution on every host once someone takes
over the server. See [No code from the server](https://docs.kogut.dev/security/#no-code-from-the-server) and
[Checks](https://docs.kogut.dev/monitoring/checks/).

For what only a script on a host can see, such as replication lag or the age of the last
backup, write a [command check](https://docs.kogut.dev/agent/command-checks/) on that host. The server never
sees or changes the command.

## Telemetry

kogut does not count installations or check for updates. See
[Outbound connections](https://docs.kogut.dev/web-apps/privacy/#outbound-connections) for the requests it
makes.

## Licence

[MIT](https://github.com/piotrkowski/kogut/blob/main/LICENSE). There is no paid edition.

## Two-factor sign-in

kogut has no one-time codes or passkeys of its own. Use your identity provider's through
[OpenID Connect](https://docs.kogut.dev/sign-in/openid-connect/) or
[forward auth](https://docs.kogut.dev/sign-in/forward-auth/), then
[turn passwords off](https://docs.kogut.dev/sign-in/passwords/#turn-passwords-off) so the password form
cannot skip the second factor.

## Team isolation

One instance serves one team, with [admins and viewers](https://docs.kogut.dev/sign-in/roles/). Separate
customers need separate instances.

## Configuration in git

[`kogut.toml`](https://docs.kogut.dev/reference/configuration/) holds services, checks, heartbeats,
notification channels, and branding. kogut reloads it and shows its objects read-only in
the panel. Objects made in the panel stay in the database: [`kogut export`](https://docs.kogut.dev/reference/cli/#kogut-export)
prints them as `kogut.toml`, and the file takes each one over with its history. A file
object with the name of a panel object but another definition rejects the file.

## Plugins and custom metrics

kogut has no plugins, custom dashboards, or arbitrary metric series. Instead:

- Accept the checks the panel suggests for what the agent
  [discovered](https://docs.kogut.dev/agent/discovery/#monitoring-suggestions).
- Edit [`kogut.toml`](https://docs.kogut.dev/reference/configuration/), by hand or with an assistant that
  [proposes the text](https://docs.kogut.dev/reference/mcp/#propose-a-change).
- Connect from outside: [heartbeats](https://docs.kogut.dev/monitoring/heartbeats/),
  [webhook channels](https://docs.kogut.dev/alerts/channels/), [deploys](https://docs.kogut.dev/deploys/api/) and
  [changes](https://docs.kogut.dev/deploys/changes/), the [HTTP API](https://docs.kogut.dev/reference/http-api/), and
  [MCP](https://docs.kogut.dev/reference/mcp/).
- For what only a script on a host can see, write a
  [command check](https://docs.kogut.dev/agent/command-checks/). Its number belongs to a check with a state,
  because incidents name likely causes only from signals whose meaning kogut knows.
- Propose a new check type or notification channel in a pull request; see
  [Contributing](https://github.com/piotrkowski/kogut/blob/main/.github/CONTRIBUTING.md).

## Self-monitoring

kogut can monitor its own server, but cannot notify you while that server is down. Run it
on another machine or set up an [external watchdog](https://docs.kogut.dev/high-availability/setups/).

## Moving from another tool

kogut does not import other tools' settings. The guides under **Coming from** map them
to `kogut.toml`, and agent [discovery](https://docs.kogut.dev/agent/discovery/) finds services on your
hosts.

## Bug reports

Report bugs in the [issue tracker](https://github.com/piotrkowski/kogut/issues) with your
version, what you did, and what you expected. Report vulnerabilities privately, as
[Security](https://docs.kogut.dev/security/) describes.
