# Fluksio documentation site, built with zensical (https://zensical.org).
# Content lives in docs/, the static build goes to site/ (gitignored).
# Build: `make docs` | Live preview: `make docs-serve`
# This config is zensical-native (TOML). It is portable to Material for MkDocs
# by translating to mkdocs.yml if the engine ever needs to change.
[project]
site_name = "Fluksio"
site_description = "Documentation for Fluksio, node-based automation for experiments and for buildings."
site_url = "https://docs.fluksio.com/"
# Footer line. HTML renders as-is, so the legal links (mirroring the index
# landing footer) and a link back to the main site live here.
copyright = """Copyright © 2026 Melvin Strobl · AGPL-3.0-or-later · fluksio.com · Impressum · Privacy Policy"""
# Fluksio brand color schemes (slate blue on neutral white/near-black, with
# terracotta as the one secondary accent), layered over the built-in
# default/slate schemes. See docs/stylesheets/extra.css.
extra_css = ["stylesheets/extra.css"]
# Site navigation. Must stay above the first [project.*] table header, or TOML
# would nest it inside that table and zensical would silently fall back to
# auto-generated (alphabetical) navigation.
nav = [
{ "Home" = "index.md" },
{ "Getting started" = [
{ "Pick your starting point" = "getting-started/index.md" },
{ "Data science" = "getting-started/data-science.md" },
{ "Facility automation" = "getting-started/facility-automation.md" },
] },
{ "Concepts" = [
{ "Flows, nodes and messages" = "concepts/flows.md" },
{ "Where a node's values come from" = "concepts/values.md" },
{ "Keeping state in a flow" = "concepts/state.md" },
{ "Runs: pipelines that finish" = "concepts/runs.md" },
] },
{ "The interface" = [
{ "The dashboard app" = "interface/index.md" },
{ "The flow editor" = "interface/flow-editor.md" },
{ "Dashboards and panels" = "interface/dashboards.md" },
{ "Secrets, modules and alerts" = "interface/operations.md" },
{ "Accounts and the portal" = "interface/portal.md" },
] },
{ "Code and the CLI" = [
{ "The fluksio command" = "code/cli.md" },
{ "Writing node code" = "code/nodes.md" },
{ "The HTTP API" = "code/api.md" },
{ "Remote workers" = "code/workers.md" },
{ "Agents over MCP" = "code/agents.md" },
] },
{ "Reference" = [
{ "Node types" = "reference/node-types.md" },
{ "Payload types" = "reference/payload-types.md" },
{ "Configuration" = "reference/configuration.md" },
] },
# The roadmap, the design guidelines and the architecture material stay in
# the repositories — repo-only, intentionally not published.
]
# Drop the "Made with Zensical" generator notice from the footer.
[project.extra]
generator = false
[project.theme]
language = "en"
# The brand mark the dashboard SPA uses (frontend/public/favicon.svg), as both
# the browser favicon and the header logo, so the docs match the app.
favicon = "assets/favicon.svg"
logo = "assets/favicon.svg"
features = [
"content.code.copy",
"navigation.footer",
"navigation.indexes",
"navigation.instant",
"navigation.sections",
"navigation.top",
"navigation.tracking",
"search.highlight",
"toc.follow",
]
# Body font mirrors both frontends (Inter); code font stays the theme default,
# which matches the app's system monospace stack.
[project.theme.font]
text = "Inter"
# Three states, the same as both frontends: follow the system, then an explicit
# light and an explicit dark the toggle cycles through.
[[project.theme.palette]]
media = "(prefers-color-scheme)"
toggle.icon = "lucide/monitor-cog"
toggle.name = "Follow the system theme"
[[project.theme.palette]]
media = "(prefers-color-scheme: light)"
scheme = "default"
toggle.icon = "lucide/sun"
toggle.name = "Switch to dark mode"
[[project.theme.palette]]
media = "(prefers-color-scheme: dark)"
scheme = "slate"
toggle.icon = "lucide/moon"
toggle.name = "Switch to light mode"
# Markdown extensions: admonitions, grids (attr_list + md_in_html), code blocks
# with highlighting and copy, content tabs, collapsible details, mermaid.
[project.markdown_extensions.abbr]
[project.markdown_extensions.admonition]
[project.markdown_extensions.attr_list]
[project.markdown_extensions.def_list]
[project.markdown_extensions.footnotes]
[project.markdown_extensions.md_in_html]
[project.markdown_extensions.toc]
permalink = true
[project.markdown_extensions.pymdownx.details]
[project.markdown_extensions.pymdownx.highlight]
anchor_linenums = true
[project.markdown_extensions.pymdownx.inlinehilite]
[project.markdown_extensions.pymdownx.superfences]
custom_fences = [
{ name = "mermaid", class = "mermaid", format = "pymdownx.superfences.fence_code_format" }
]
[project.markdown_extensions.pymdownx.tabbed]
alternate_style = true