/` regardless of which folder the source file is in, so relative paths will break:
-```markdown
- [Install](/docs/getting-started/installing-anylog/)
- [Background Services](/docs/network-services/background-services/#rest-service)
-```
- The slug is always the filename without `.md`, lowercased, under its section directory name (also lowercased with hyphens).
-- **External links** must open in a new tab:
-```html
- Link text
-```
-- Keep front matter `description` to a single sentence — it appears as the subtitle under the page title
-- Keep to short sentences, add drawings/pics (PNG files) to make it easy to understand for readers that probably will be more OT than IT skills base
-
----
-
-- The title at the top is also used as the page title, there's no need for double title
-**Example**: How not to define the Makefile
-```markdown
----
-title: Introduction to AnyLog
-description: Understanding AnyLog's architecture, node types, and core concepts.
-layout: page
----
-
-# Introduction to AnyLog
-[content]
-```
-
----
-
-## Leveraging Claude LLM to Update a Doc Page
-
-A reliable pattern for getting Claude to rewrite or update a page while keeping it consistent with the rest of the docs:
-
-1. Provide the **raw GitHub URL** of the file to update — in GitHub, open the file and click **Raw**, then copy the address bar URL
-2. Provide the **raw GitHub URL** of an existing page whose layout you want the output to match
-3. Include the required front matter block in your prompt
-4. Ask Claude to rewrite the first file to match the structure and style of the second
+The slug is the synced path without the `.md` extension after the sync script normalizes spaces and punctuation. The
+sidebar display name is the synced filename without `.md`. The order of slugs within each section controls the order
+they appear in the sidebar.
-Keep the prompt substantive — include at least a short paragraph describing the intent and audience for each major section you want changed, not just bullet points. The more context you give about tone, audience, and structure, the better the result.
+`navigation.py` is consumed by `validate_docs.py`, which scans the generated `_docs/` directory and writes the `nav`
+block in `_config.yml`. This runs automatically on `docker compose up` and in GitHub Actions — you do not need to
+invoke it manually.
-### Sample prompt
+### Running Without Make
-The following is a real example using `remote-gui.md`. Copy and adapt it for any page you want to update.
-
----
-
-> I need you to update the AnyLog documentation page for the Remote GUI.
->
-> **File to update (raw URL):**
-> `https://raw.githubusercontent.com/AnyLog-co/anylog-docs.github.io/refs/heads/main/_docs/Tools-UI/remote-gui.md`
->
-> **Example file to match in style and structure (raw URL):**
-> `https://raw.githubusercontent.com/AnyLog-co/anylog-docs.github.io/refs/heads/main/_docs/Getting-Started/getting-started.md`
->
-> **Required front matter — keep this exactly at the top of the file:**
-> ```yaml
-> ---
-> title: Remote GUI
-> description: Architecture and developer reference for the AnyLog Remote GUI.
-> layout: page
-> ---
-> ```
->
-> **What to change:**
->
-> The current page reads like internal notes — it's dense and assumes the reader already knows the codebase. Rewrite it so a new developer joining the project can follow it from top to bottom. The architecture diagram and key terminology table are good and should stay, but the surrounding prose needs more context.
->
-> The "Running locally" section currently has two terminal blocks with commands that aren't explained — add a sentence before each block describing what it does and why. The `uvicorn` command in particular looks like it may have a path issue (`CLI.local-cli-backend.main:app` uses dots but the `cd` above already entered the subdirectory); please flag that or correct it.
->
-> The "Plugin system" section is the most important part for contributors — expand the intro paragraph to explain *when* someone would want to build a plugin versus modifying a core feature. Keep the code examples as-is.
->
-> Use absolute permalink paths for links to other pages in `_docs/` — e.g. `/docs/network-services/background-services/`. Any link to an external repo or external site should use `` format. Do not change any section headings — the navigation relies on them.
-
----
-
-Adjust the URLs, front matter, and the description of changes to match whatever page you are working on.
-
----
-
-
-
-## Local Development with Docker
-
-The easiest way to preview the docs locally is via Docker — no Ruby or Jekyll installation required.
-
-**Prerequisites:** [Docker](https://docs.docker.com/get-docker/) and [Docker Compose](https://docs.docker.com/compose/install/)
+You can drive Docker Compose directly instead of going through `make`:
```bash
git clone https://github.com/AnyLog-co/anylog-docs.github.io.git
cd anylog-docs.github.io
-docker compose up -d
-```
-Once running, open your browser to **http://localhost:4000**.
+LOCAL_DOCS=/path/to/AnyLog-co/documentation docker compose up --build -d
+```
-The container mounts your local `_docs/` directory, so edits are reflected live — no restart needed. To stop:
+Open **http://localhost:4000**. To stop:
```bash
docker compose down
```
-**Troubleshooting:** If the container exits immediately with a bundle write permissions error (`There was an error while trying to write to /srv/bundle`), run:
+> Don't skip `LOCAL_DOCS` here — without it, the compose file falls back to mounting the current directory (this repo)
+> as the documentation source, which has no content to render.
+
+**Troubleshooting:** If the container exits immediately with a bundle write-permissions error (`There was an error
+while trying to write to /srv/bundle`), clear the cached volume and retry:
```bash
docker compose down -v
@@ -235,7 +129,7 @@ docker compose up -d
The `-v` flag removes the cached volume so it gets recreated with the correct permissions.
-## Local Mac Development
+### Local Mac Development
Use the local launcher when you want to run Jekyll directly on macOS without Docker:
@@ -259,3 +153,57 @@ Or let the launcher install Homebrew Ruby 3.3:
```bash
python3 scripts/dev.py --install-ruby
```
+
+---
+
+## Documentation Source
+
+Documentation content is sourced from the public
+AnyLog-co/documentation
+repository on the `main` branch.
+
+Do not edit generated Markdown files in `_docs/` in this repository. The Jekyll build runs
+`.github/scripts/sync_external_docs.py`, which clones `AnyLog-co/documentation`, converts every upstream `.md`
+file into a Jekyll collection page, copies supporting assets into `assets/external-docs/`, and regenerates the sidebar
+navigation.
+
+The GitHub Pages workflow rebuilds on pushes and pull requests in this repository, manual workflow dispatch, an hourly
+schedule, and `repository_dispatch` events of type `documentation-updated`.
+
+For immediate publishing when `AnyLog-co/documentation` changes, add a workflow in that repository that sends a
+`repository_dispatch` event to this repository after pushes to `main`. Without that dispatch, the scheduled rebuild
+will still pick up upstream changes within the next hourly run.
+
+**Editing documentation content itself — creating or updating pages, front matter, page IDs, and formatting
+conventions — happens in the content repo, not here:**
+- Content repo: [AnyLog-co/documentation](https://github.com/AnyLog-co/documentation)
+- How to update documentation: [HOWTO.md](https://github.com/AnyLog-co/documentation/blob/os-dev/HOWTO.md)
+
+---
+
+## Contributing
+
+Changes to **this repository** (the Jekyll backend itself — templates, build scripts, `Makefile`, CI config, etc.)
+follow the same staged workflow as the content repo: this repository is implementing a change control process, so it
+follows a **PR-based workflow** against the **`pre-develop`** branch, not `main`. `main` is the published branch
+backing the live documentation URL (see [Documentation Source](#documentation-source)); changes land there once
+`pre-develop` is promoted to `main`.
+
+**Required actions:**
+- Find the file you want to update and branch/fork it from `pre-develop` (or create a new file)
+- If you work locally:
+ 1. Make sure your local copy is in sync with `pre-develop`:
+ ```bash
+ git fetch origin
+ git rebase origin/pre-develop
+ ```
+ 2. Create a feature branch or fork the file, make your changes, then open a pull request **against `pre-develop`**
+
+- Once edited, create a **pull request** for review and inclusion at the next update cycle
+
+*Note:* direct pushes to `pre-develop` are blocked.
+*Note 2:* merging into `pre-develop` does not publish immediately — the live site rebuilds once `pre-develop` is
+promoted to `main`.
+
+> Content authoring conventions (page creation, front matter, permalinks, image paths) live in the content repo's
+> [HOWTO.md](https://github.com/AnyLog-co/documentation/blob/os-dev/HOWTO.md), not in this repository.
\ No newline at end of file
diff --git a/_config.yml b/_config.yml
index c8aedf7..b0e85d2 100644
--- a/_config.yml
+++ b/_config.yml
@@ -216,156 +216,170 @@ nav:
url: "/docs/04-southbound-interfaces/01-southbound-interfaces/"
file: "04-southbound-interfaces/01-southbound-interfaces.md"
source_path: "04- Southbound Interfaces/01- Southbound Interfaces.md"
+ - kind: "page"
+ title: "Mapping Policy"
+ match_path: "/docs/04-southbound-interfaces/02-mapping-policy/"
+ slug: "04-southbound-interfaces/02-mapping-policy"
+ url: "/docs/04-southbound-interfaces/02-mapping-policy/"
+ file: "04-southbound-interfaces/02-mapping-policy.md"
+ source_path: "04- Southbound Interfaces/02- Mapping Policy.md"
- kind: "section"
title: "Direct Connectors"
- match_path: "/docs/04-southbound-interfaces/02-direct-connectors/"
+ match_path: "/docs/04-southbound-interfaces/03-direct-connectors/"
children:
- kind: "page"
title: "REST"
- match_path: "/docs/04-southbound-interfaces/02-direct-connectors/01-rest/"
- slug: "04-southbound-interfaces/02-direct-connectors/01-rest"
- url: "/docs/04-southbound-interfaces/02-direct-connectors/01-rest/"
- file: "04-southbound-interfaces/02-direct-connectors/01-rest.md"
- source_path: "04- Southbound Interfaces/02- Direct Connectors/01- REST.md"
+ match_path: "/docs/04-southbound-interfaces/03-direct-connectors/01-rest/"
+ slug: "04-southbound-interfaces/03-direct-connectors/01-rest"
+ url: "/docs/04-southbound-interfaces/03-direct-connectors/01-rest/"
+ file: "04-southbound-interfaces/03-direct-connectors/01-rest.md"
+ source_path: "04- Southbound Interfaces/03- Direct Connectors/01- REST.md"
- kind: "page"
title: "Message Broker"
- match_path: "/docs/04-southbound-interfaces/02-direct-connectors/02-message-broker/"
- slug: "04-southbound-interfaces/02-direct-connectors/02-message-broker"
- url: "/docs/04-southbound-interfaces/02-direct-connectors/02-message-broker/"
- file: "04-southbound-interfaces/02-direct-connectors/02-message-broker.md"
- source_path: "04- Southbound Interfaces/02- Direct Connectors/02- Message Broker.md"
+ match_path: "/docs/04-southbound-interfaces/03-direct-connectors/02-message-broker/"
+ slug: "04-southbound-interfaces/03-direct-connectors/02-message-broker"
+ url: "/docs/04-southbound-interfaces/03-direct-connectors/02-message-broker/"
+ file: "04-southbound-interfaces/03-direct-connectors/02-message-broker.md"
+ source_path: "04- Southbound Interfaces/03- Direct Connectors/02- Message Broker.md"
- kind: "section"
title: "Industrial Connectors"
- match_path: "/docs/04-southbound-interfaces/03-industrial-connectors/"
+ match_path: "/docs/04-southbound-interfaces/04-industrial-connectors/"
children:
+ - kind: "page"
+ title: "PLC Mapping"
+ match_path: "/docs/04-southbound-interfaces/04-industrial-connectors/01-plc-mapping/"
+ slug: "04-southbound-interfaces/04-industrial-connectors/01-plc-mapping"
+ url: "/docs/04-southbound-interfaces/04-industrial-connectors/01-plc-mapping/"
+ file: "04-southbound-interfaces/04-industrial-connectors/01-plc-mapping.md"
+ source_path: "04- Southbound Interfaces/04- Industrial Connectors/01- PLC Mapping.md"
- kind: "page"
title: "Modbus"
- match_path: "/docs/04-southbound-interfaces/03-industrial-connectors/01-modbus/"
- slug: "04-southbound-interfaces/03-industrial-connectors/01-modbus"
- url: "/docs/04-southbound-interfaces/03-industrial-connectors/01-modbus/"
- file: "04-southbound-interfaces/03-industrial-connectors/01-modbus.md"
- source_path: "04- Southbound Interfaces/03- Industrial Connectors/01- Modbus.md"
+ match_path: "/docs/04-southbound-interfaces/04-industrial-connectors/02-modbus/"
+ slug: "04-southbound-interfaces/04-industrial-connectors/02-modbus"
+ url: "/docs/04-southbound-interfaces/04-industrial-connectors/02-modbus/"
+ file: "04-southbound-interfaces/04-industrial-connectors/02-modbus.md"
+ source_path: "04- Southbound Interfaces/04- Industrial Connectors/02- Modbus.md"
- kind: "page"
title: "OPC-UA"
- match_path: "/docs/04-southbound-interfaces/03-industrial-connectors/02-opc-ua/"
- slug: "04-southbound-interfaces/03-industrial-connectors/02-opc-ua"
- url: "/docs/04-southbound-interfaces/03-industrial-connectors/02-opc-ua/"
- file: "04-southbound-interfaces/03-industrial-connectors/02-opc-ua.md"
- source_path: "04- Southbound Interfaces/03- Industrial Connectors/02- OPC-UA.md"
+ match_path: "/docs/04-southbound-interfaces/04-industrial-connectors/03-opc-ua/"
+ slug: "04-southbound-interfaces/04-industrial-connectors/03-opc-ua"
+ url: "/docs/04-southbound-interfaces/04-industrial-connectors/03-opc-ua/"
+ file: "04-southbound-interfaces/04-industrial-connectors/03-opc-ua.md"
+ source_path: "04- Southbound Interfaces/04- Industrial Connectors/03- OPC-UA.md"
- kind: "page"
title: "EtherIP"
- match_path: "/docs/04-southbound-interfaces/03-industrial-connectors/03-etherip/"
- slug: "04-southbound-interfaces/03-industrial-connectors/03-etherip"
- url: "/docs/04-southbound-interfaces/03-industrial-connectors/03-etherip/"
- file: "04-southbound-interfaces/03-industrial-connectors/03-etherip.md"
- source_path: "04- Southbound Interfaces/03- Industrial Connectors/03- EtherIP.md"
+ match_path: "/docs/04-southbound-interfaces/04-industrial-connectors/04-etherip/"
+ slug: "04-southbound-interfaces/04-industrial-connectors/04-etherip"
+ url: "/docs/04-southbound-interfaces/04-industrial-connectors/04-etherip/"
+ file: "04-southbound-interfaces/04-industrial-connectors/04-etherip.md"
+ source_path: "04- Southbound Interfaces/04- Industrial Connectors/04- EtherIP.md"
- kind: "page"
title: "DNP3"
- match_path: "/docs/04-southbound-interfaces/03-industrial-connectors/04-dnp3/"
- slug: "04-southbound-interfaces/03-industrial-connectors/04-dnp3"
- url: "/docs/04-southbound-interfaces/03-industrial-connectors/04-dnp3/"
- file: "04-southbound-interfaces/03-industrial-connectors/04-dnp3.md"
- source_path: "04- Southbound Interfaces/03- Industrial Connectors/04- DNP3.md"
+ match_path: "/docs/04-southbound-interfaces/04-industrial-connectors/05-dnp3/"
+ slug: "04-southbound-interfaces/04-industrial-connectors/05-dnp3"
+ url: "/docs/04-southbound-interfaces/04-industrial-connectors/05-dnp3/"
+ file: "04-southbound-interfaces/04-industrial-connectors/05-dnp3.md"
+ source_path: "04- Southbound Interfaces/04- Industrial Connectors/05- DNP3.md"
- kind: "section"
title: "DNP3"
- match_path: "/docs/04-southbound-interfaces/03-industrial-connectors/04-1-dnp3/"
+ match_path: "/docs/04-southbound-interfaces/04-industrial-connectors/05-1-dnp3/"
children:
- kind: "page"
title: "DNP3 - Deploying Connector via Script"
- match_path: "/docs/04-southbound-interfaces/03-industrial-connectors/04-1-dnp3/01-dnp3-deploying-connector-via-script/"
- slug: "04-southbound-interfaces/03-industrial-connectors/04-1-dnp3/01-dnp3-deploying-connector-via-script"
- url: "/docs/04-southbound-interfaces/03-industrial-connectors/04-1-dnp3/01-dnp3-deploying-connector-via-script/"
- file: "04-southbound-interfaces/03-industrial-connectors/04-1-dnp3/01-dnp3-deploying-connector-via-script.md"
- source_path: "04- Southbound Interfaces/03- Industrial Connectors/04-1 DNP3/01- DNP3 - Deploying Connector via Script.md"
+ match_path: "/docs/04-southbound-interfaces/04-industrial-connectors/05-1-dnp3/01-dnp3-deploying-connector-via-script/"
+ slug: "04-southbound-interfaces/04-industrial-connectors/05-1-dnp3/01-dnp3-deploying-connector-via-script"
+ url: "/docs/04-southbound-interfaces/04-industrial-connectors/05-1-dnp3/01-dnp3-deploying-connector-via-script/"
+ file: "04-southbound-interfaces/04-industrial-connectors/05-1-dnp3/01-dnp3-deploying-connector-via-script.md"
+ source_path: "04- Southbound Interfaces/04- Industrial Connectors/05-1 DNP3/01- DNP3 - Deploying Connector via Script.md"
- kind: "page"
title: "DNP3 - Mapping-Policies"
- match_path: "/docs/04-southbound-interfaces/03-industrial-connectors/04-1-dnp3/02-dnp3-mapping-policies/"
- slug: "04-southbound-interfaces/03-industrial-connectors/04-1-dnp3/02-dnp3-mapping-policies"
- url: "/docs/04-southbound-interfaces/03-industrial-connectors/04-1-dnp3/02-dnp3-mapping-policies/"
- file: "04-southbound-interfaces/03-industrial-connectors/04-1-dnp3/02-dnp3-mapping-policies.md"
- source_path: "04- Southbound Interfaces/03- Industrial Connectors/04-1 DNP3/02- DNP3 - Mapping-Policies.md"
+ match_path: "/docs/04-southbound-interfaces/04-industrial-connectors/05-1-dnp3/02-dnp3-mapping-policies/"
+ slug: "04-southbound-interfaces/04-industrial-connectors/05-1-dnp3/02-dnp3-mapping-policies"
+ url: "/docs/04-southbound-interfaces/04-industrial-connectors/05-1-dnp3/02-dnp3-mapping-policies/"
+ file: "04-southbound-interfaces/04-industrial-connectors/05-1-dnp3/02-dnp3-mapping-policies.md"
+ source_path: "04- Southbound Interfaces/04- Industrial Connectors/05-1 DNP3/02- DNP3 - Mapping-Policies.md"
- kind: "page"
title: "DNP3 - TLS test certificates"
- match_path: "/docs/04-southbound-interfaces/03-industrial-connectors/04-1-dnp3/03-dnp3-tls-test-certificates/"
- slug: "04-southbound-interfaces/03-industrial-connectors/04-1-dnp3/03-dnp3-tls-test-certificates"
- url: "/docs/04-southbound-interfaces/03-industrial-connectors/04-1-dnp3/03-dnp3-tls-test-certificates/"
- file: "04-southbound-interfaces/03-industrial-connectors/04-1-dnp3/03-dnp3-tls-test-certificates.md"
- source_path: "04- Southbound Interfaces/03- Industrial Connectors/04-1 DNP3/03- DNP3 - TLS test certificates.md"
+ match_path: "/docs/04-southbound-interfaces/04-industrial-connectors/05-1-dnp3/03-dnp3-tls-test-certificates/"
+ slug: "04-southbound-interfaces/04-industrial-connectors/05-1-dnp3/03-dnp3-tls-test-certificates"
+ url: "/docs/04-southbound-interfaces/04-industrial-connectors/05-1-dnp3/03-dnp3-tls-test-certificates/"
+ file: "04-southbound-interfaces/04-industrial-connectors/05-1-dnp3/03-dnp3-tls-test-certificates.md"
+ source_path: "04- Southbound Interfaces/04- Industrial Connectors/05-1 DNP3/03- DNP3 - TLS test certificates.md"
- kind: "section"
title: "Monitoring"
- match_path: "/docs/04-southbound-interfaces/04-monitoring/"
+ match_path: "/docs/04-southbound-interfaces/05-monitoring/"
children:
- kind: "page"
title: "Node Monitoring"
- match_path: "/docs/04-southbound-interfaces/04-monitoring/01-node-monitoring/"
- slug: "04-southbound-interfaces/04-monitoring/01-node-monitoring"
- url: "/docs/04-southbound-interfaces/04-monitoring/01-node-monitoring/"
- file: "04-southbound-interfaces/04-monitoring/01-node-monitoring.md"
- source_path: "04- Southbound Interfaces/04- Monitoring/01- Node Monitoring.md"
+ match_path: "/docs/04-southbound-interfaces/05-monitoring/01-node-monitoring/"
+ slug: "04-southbound-interfaces/05-monitoring/01-node-monitoring"
+ url: "/docs/04-southbound-interfaces/05-monitoring/01-node-monitoring/"
+ file: "04-southbound-interfaces/05-monitoring/01-node-monitoring.md"
+ source_path: "04- Southbound Interfaces/05- Monitoring/01- Node Monitoring.md"
- kind: "page"
title: "Syslog"
- match_path: "/docs/04-southbound-interfaces/04-monitoring/02-syslog/"
- slug: "04-southbound-interfaces/04-monitoring/02-syslog"
- url: "/docs/04-southbound-interfaces/04-monitoring/02-syslog/"
- file: "04-southbound-interfaces/04-monitoring/02-syslog.md"
- source_path: "04- Southbound Interfaces/04- Monitoring/02- Syslog.md"
+ match_path: "/docs/04-southbound-interfaces/05-monitoring/02-syslog/"
+ slug: "04-southbound-interfaces/05-monitoring/02-syslog"
+ url: "/docs/04-southbound-interfaces/05-monitoring/02-syslog/"
+ file: "04-southbound-interfaces/05-monitoring/02-syslog.md"
+ source_path: "04- Southbound Interfaces/05- Monitoring/02- Syslog.md"
- kind: "section"
title: "RPC & Media Streaming"
- match_path: "/docs/04-southbound-interfaces/05-rpc-and-media-streaming/"
+ match_path: "/docs/04-southbound-interfaces/06-rpc-and-media-streaming/"
children:
- kind: "page"
title: "gRPC"
- match_path: "/docs/04-southbound-interfaces/05-rpc-and-media-streaming/01-grpc/"
- slug: "04-southbound-interfaces/05-rpc-and-media-streaming/01-grpc"
- url: "/docs/04-southbound-interfaces/05-rpc-and-media-streaming/01-grpc/"
- file: "04-southbound-interfaces/05-rpc-and-media-streaming/01-grpc.md"
- source_path: "04- Southbound Interfaces/05- RPC & Media Streaming/01- gRPC.md"
+ match_path: "/docs/04-southbound-interfaces/06-rpc-and-media-streaming/01-grpc/"
+ slug: "04-southbound-interfaces/06-rpc-and-media-streaming/01-grpc"
+ url: "/docs/04-southbound-interfaces/06-rpc-and-media-streaming/01-grpc/"
+ file: "04-southbound-interfaces/06-rpc-and-media-streaming/01-grpc.md"
+ source_path: "04- Southbound Interfaces/06- RPC & Media Streaming/01- gRPC.md"
- kind: "page"
title: "Video Streaming"
- match_path: "/docs/04-southbound-interfaces/05-rpc-and-media-streaming/02-video-streaming/"
- slug: "04-southbound-interfaces/05-rpc-and-media-streaming/02-video-streaming"
- url: "/docs/04-southbound-interfaces/05-rpc-and-media-streaming/02-video-streaming/"
- file: "04-southbound-interfaces/05-rpc-and-media-streaming/02-video-streaming.md"
- source_path: "04- Southbound Interfaces/05- RPC & Media Streaming/02- Video Streaming.md"
+ match_path: "/docs/04-southbound-interfaces/06-rpc-and-media-streaming/02-video-streaming/"
+ slug: "04-southbound-interfaces/06-rpc-and-media-streaming/02-video-streaming"
+ url: "/docs/04-southbound-interfaces/06-rpc-and-media-streaming/02-video-streaming/"
+ file: "04-southbound-interfaces/06-rpc-and-media-streaming/02-video-streaming.md"
+ source_path: "04- Southbound Interfaces/06- RPC & Media Streaming/02- Video Streaming.md"
- kind: "section"
title: "Third-Party"
- match_path: "/docs/04-southbound-interfaces/06-third-party/"
+ match_path: "/docs/04-southbound-interfaces/07-third-party/"
children:
- kind: "page"
title: "node-RED"
- match_path: "/docs/04-southbound-interfaces/06-third-party/01-node-red/"
- slug: "04-southbound-interfaces/06-third-party/01-node-red"
- url: "/docs/04-southbound-interfaces/06-third-party/01-node-red/"
- file: "04-southbound-interfaces/06-third-party/01-node-red.md"
- source_path: "04- Southbound Interfaces/06- Third-Party/01- node-RED.md"
+ match_path: "/docs/04-southbound-interfaces/07-third-party/01-node-red/"
+ slug: "04-southbound-interfaces/07-third-party/01-node-red"
+ url: "/docs/04-southbound-interfaces/07-third-party/01-node-red/"
+ file: "04-southbound-interfaces/07-third-party/01-node-red.md"
+ source_path: "04- Southbound Interfaces/07- Third-Party/01- node-RED.md"
- kind: "page"
title: "Telegraf"
- match_path: "/docs/04-southbound-interfaces/06-third-party/02-telegraf/"
- slug: "04-southbound-interfaces/06-third-party/02-telegraf"
- url: "/docs/04-southbound-interfaces/06-third-party/02-telegraf/"
- file: "04-southbound-interfaces/06-third-party/02-telegraf.md"
- source_path: "04- Southbound Interfaces/06- Third-Party/02- Telegraf.md"
+ match_path: "/docs/04-southbound-interfaces/07-third-party/02-telegraf/"
+ slug: "04-southbound-interfaces/07-third-party/02-telegraf"
+ url: "/docs/04-southbound-interfaces/07-third-party/02-telegraf/"
+ file: "04-southbound-interfaces/07-third-party/02-telegraf.md"
+ source_path: "04- Southbound Interfaces/07- Third-Party/02- Telegraf.md"
- kind: "page"
title: "EdgeX"
- match_path: "/docs/04-southbound-interfaces/06-third-party/03-edgex/"
- slug: "04-southbound-interfaces/06-third-party/03-edgex"
- url: "/docs/04-southbound-interfaces/06-third-party/03-edgex/"
- file: "04-southbound-interfaces/06-third-party/03-edgex.md"
- source_path: "04- Southbound Interfaces/06- Third-Party/03- EdgeX.md"
+ match_path: "/docs/04-southbound-interfaces/07-third-party/03-edgex/"
+ slug: "04-southbound-interfaces/07-third-party/03-edgex"
+ url: "/docs/04-southbound-interfaces/07-third-party/03-edgex/"
+ file: "04-southbound-interfaces/07-third-party/03-edgex.md"
+ source_path: "04- Southbound Interfaces/07- Third-Party/03- EdgeX.md"
- kind: "page"
title: "Kubearmor"
- match_path: "/docs/04-southbound-interfaces/06-third-party/04-kubearmor/"
- slug: "04-southbound-interfaces/06-third-party/04-kubearmor"
- url: "/docs/04-southbound-interfaces/06-third-party/04-kubearmor/"
- file: "04-southbound-interfaces/06-third-party/04-kubearmor.md"
- source_path: "04- Southbound Interfaces/06- Third-Party/04- Kubearmor.md"
+ match_path: "/docs/04-southbound-interfaces/07-third-party/04-kubearmor/"
+ slug: "04-southbound-interfaces/07-third-party/04-kubearmor"
+ url: "/docs/04-southbound-interfaces/07-third-party/04-kubearmor/"
+ file: "04-southbound-interfaces/07-third-party/04-kubearmor.md"
+ source_path: "04- Southbound Interfaces/07- Third-Party/04- Kubearmor.md"
- kind: "page"
title: "Data Ingestion"
- match_path: "/docs/04-southbound-interfaces/07-data-ingestion/"
- slug: "04-southbound-interfaces/07-data-ingestion"
- url: "/docs/04-southbound-interfaces/07-data-ingestion/"
- file: "04-southbound-interfaces/07-data-ingestion.md"
- source_path: "04- Southbound Interfaces/07- Data Ingestion.md"
+ match_path: "/docs/04-southbound-interfaces/08-data-ingestion/"
+ slug: "04-southbound-interfaces/08-data-ingestion"
+ url: "/docs/04-southbound-interfaces/08-data-ingestion/"
+ file: "04-southbound-interfaces/08-data-ingestion.md"
+ source_path: "04- Southbound Interfaces/08- Data Ingestion.md"
- kind: "section"
title: "Northbound Connectors"
match_path: "/docs/05-northbound-connectors/"
@@ -459,19 +473,26 @@ nav:
file: "06-networking-and-security/04-using-rest.md"
source_path: "06- Networking & Security/04- Using REST.md"
- kind: "page"
- title: "Message Broker"
- match_path: "/docs/06-networking-and-security/05-message-broker/"
- slug: "06-networking-and-security/05-message-broker"
- url: "/docs/06-networking-and-security/05-message-broker/"
- file: "06-networking-and-security/05-message-broker.md"
- source_path: "06- Networking & Security/05- Message Broker.md"
+ title: "MQTT Message Broker"
+ match_path: "/docs/06-networking-and-security/05-mqtt-message-broker/"
+ slug: "06-networking-and-security/05-mqtt-message-broker"
+ url: "/docs/06-networking-and-security/05-mqtt-message-broker/"
+ file: "06-networking-and-security/05-mqtt-message-broker.md"
+ source_path: "06- Networking & Security/05- MQTT Message Broker.md"
+ - kind: "page"
+ title: "Kafka Message Client"
+ match_path: "/docs/06-networking-and-security/05-1-kafka-message-client/"
+ slug: "06-networking-and-security/05-1-kafka-message-client"
+ url: "/docs/06-networking-and-security/05-1-kafka-message-client/"
+ file: "06-networking-and-security/05-1-kafka-message-client.md"
+ source_path: "06- Networking & Security/05-1 Kafka Message Client.md"
- kind: "page"
title: "Connectors To Data Sources"
- match_path: "/docs/06-networking-and-security/05-1-connectors-to-data-sources/"
- slug: "06-networking-and-security/05-1-connectors-to-data-sources"
- url: "/docs/06-networking-and-security/05-1-connectors-to-data-sources/"
- file: "06-networking-and-security/05-1-connectors-to-data-sources.md"
- source_path: "06- Networking & Security/05-1 Connectors To Data Sources.md"
+ match_path: "/docs/06-networking-and-security/05-2-connectors-to-data-sources/"
+ slug: "06-networking-and-security/05-2-connectors-to-data-sources"
+ url: "/docs/06-networking-and-security/05-2-connectors-to-data-sources/"
+ file: "06-networking-and-security/05-2-connectors-to-data-sources.md"
+ source_path: "06- Networking & Security/05-2 Connectors To Data Sources.md"
- kind: "section"
title: "Network"
match_path: "/docs/06-networking-and-security/06-network/"
@@ -683,33 +704,26 @@ nav:
file: "08-blockchain-and-metadata/03-1-blockchain-full-circle.md"
source_path: "08- Blockchain & Metadata/03-1 Blockchain Full Circle.md"
- kind: "page"
- title: "Mapping Policy"
- match_path: "/docs/08-blockchain-and-metadata/04-mapping-policy/"
- slug: "08-blockchain-and-metadata/04-mapping-policy"
- url: "/docs/08-blockchain-and-metadata/04-mapping-policy/"
- file: "08-blockchain-and-metadata/04-mapping-policy.md"
- source_path: "08- Blockchain & Metadata/04- Mapping Policy.md"
- - kind: "page"
- title: "Unitfied Namespace"
- match_path: "/docs/08-blockchain-and-metadata/05-unitfied-namespace/"
- slug: "08-blockchain-and-metadata/05-unitfied-namespace"
- url: "/docs/08-blockchain-and-metadata/05-unitfied-namespace/"
- file: "08-blockchain-and-metadata/05-unitfied-namespace.md"
- source_path: "08- Blockchain & Metadata/05- Unitfied Namespace.md"
+ title: "Unified Namespace"
+ match_path: "/docs/08-blockchain-and-metadata/04-unified-namespace/"
+ slug: "08-blockchain-and-metadata/04-unified-namespace"
+ url: "/docs/08-blockchain-and-metadata/04-unified-namespace/"
+ file: "08-blockchain-and-metadata/04-unified-namespace.md"
+ source_path: "08- Blockchain & Metadata/04- Unified Namespace.md"
- kind: "page"
title: "UNS Custom Dynamic Examples"
- match_path: "/docs/08-blockchain-and-metadata/05-1-uns-custom-dynamic-examples/"
- slug: "08-blockchain-and-metadata/05-1-uns-custom-dynamic-examples"
- url: "/docs/08-blockchain-and-metadata/05-1-uns-custom-dynamic-examples/"
- file: "08-blockchain-and-metadata/05-1-uns-custom-dynamic-examples.md"
- source_path: "08- Blockchain & Metadata/05-1 UNS Custom Dynamic Examples.md"
+ match_path: "/docs/08-blockchain-and-metadata/04-1-uns-custom-dynamic-examples/"
+ slug: "08-blockchain-and-metadata/04-1-uns-custom-dynamic-examples"
+ url: "/docs/08-blockchain-and-metadata/04-1-uns-custom-dynamic-examples/"
+ file: "08-blockchain-and-metadata/04-1-uns-custom-dynamic-examples.md"
+ source_path: "08- Blockchain & Metadata/04-1 UNS Custom Dynamic Examples.md"
- kind: "page"
title: "UNS Custom Examples"
- match_path: "/docs/08-blockchain-and-metadata/05-2-uns-custom-examples/"
- slug: "08-blockchain-and-metadata/05-2-uns-custom-examples"
- url: "/docs/08-blockchain-and-metadata/05-2-uns-custom-examples/"
- file: "08-blockchain-and-metadata/05-2-uns-custom-examples.md"
- source_path: "08- Blockchain & Metadata/05-2 UNS Custom Examples.md"
+ match_path: "/docs/08-blockchain-and-metadata/04-2-uns-custom-examples/"
+ slug: "08-blockchain-and-metadata/04-2-uns-custom-examples"
+ url: "/docs/08-blockchain-and-metadata/04-2-uns-custom-examples/"
+ file: "08-blockchain-and-metadata/04-2-uns-custom-examples.md"
+ source_path: "08- Blockchain & Metadata/04-2 UNS Custom Examples.md"
- kind: "section"
title: "Data Management"
match_path: "/docs/09-data-management/"
@@ -802,6 +816,13 @@ nav:
url: "/docs/09-data-management/06-query-profiling/"
file: "09-data-management/06-query-profiling.md"
source_path: "09- Data Management/06- Query Profiling.md"
+ - kind: "page"
+ title: "Creating and Managing a Non-Time-Series Table"
+ match_path: "/docs/09-data-management/07-creating-and-managing-a-non-time-series-table/"
+ slug: "09-data-management/07-creating-and-managing-a-non-time-series-table"
+ url: "/docs/09-data-management/07-creating-and-managing-a-non-time-series-table/"
+ file: "09-data-management/07-creating-and-managing-a-non-time-series-table.md"
+ source_path: "09- Data Management/07- Creating and Managing a Non-Time-Series Table.md"
- kind: "section"
title: "Edge Data Manager"
match_path: "/docs/10-edge-data-manager/"
@@ -818,19 +839,19 @@ nav:
match_path: "/docs/11-extended-services/"
children:
- kind: "page"
- title: "LLM Dashboard Generation"
- match_path: "/docs/11-extended-services/01-llm-dashboard-generation/"
- slug: "11-extended-services/01-llm-dashboard-generation"
- url: "/docs/11-extended-services/01-llm-dashboard-generation/"
- file: "11-extended-services/01-llm-dashboard-generation.md"
- source_path: "11- Extended Services/01- LLM Dashboard Generation.md"
+ title: "Performance"
+ match_path: "/docs/11-extended-services/01-performance/"
+ slug: "11-extended-services/01-performance"
+ url: "/docs/11-extended-services/01-performance/"
+ file: "11-extended-services/01-performance.md"
+ source_path: "11- Extended Services/01- Performance.md"
- kind: "page"
- title: "mcpAI"
- match_path: "/docs/11-extended-services/02-mcpai/"
- slug: "11-extended-services/02-mcpai"
- url: "/docs/11-extended-services/02-mcpai/"
- file: "11-extended-services/02-mcpai.md"
- source_path: "11- Extended Services/02- mcpAI.md"
+ title: "LLM Dashboard Generation"
+ match_path: "/docs/11-extended-services/02-llm-dashboard-generation/"
+ slug: "11-extended-services/02-llm-dashboard-generation"
+ url: "/docs/11-extended-services/02-llm-dashboard-generation/"
+ file: "11-extended-services/02-llm-dashboard-generation.md"
+ source_path: "11- Extended Services/02- LLM Dashboard Generation.md"
- kind: "page"
title: "Federated Learning"
match_path: "/docs/11-extended-services/03-federated-learning/"
@@ -838,6 +859,13 @@ nav:
url: "/docs/11-extended-services/03-federated-learning/"
file: "11-extended-services/03-federated-learning.md"
source_path: "11- Extended Services/03- Federated Learning.md"
+ - kind: "page"
+ title: "mcpAI"
+ match_path: "/docs/11-extended-services/04-mcpai/"
+ slug: "11-extended-services/04-mcpai"
+ url: "/docs/11-extended-services/04-mcpai/"
+ file: "11-extended-services/04-mcpai.md"
+ source_path: "11- Extended Services/04- mcpAI.md"
- kind: "section"
title: "Examples & Use Cases"
match_path: "/docs/12-examples-and-use-cases/"
diff --git a/_includes/home_content.html b/_includes/home_content.html
index 4727df3..fd205ab 100644
--- a/_includes/home_content.html
+++ b/_includes/home_content.html
@@ -8,6 +8,11 @@ AnyLog Documentation
diff --git a/docker-compose.yaml b/docker-compose.yaml
index 80c679d..527c1aa 100644
--- a/docker-compose.yaml
+++ b/docker-compose.yaml
@@ -7,9 +7,12 @@ services:
- "4000:4000"
- "35729:35729"
command: bash /srv/content/.github/scripts/dev-start.sh
+ environment:
+ - ANYLOG_DOCS_SOURCE_DIR=/srv/documentation
volumes:
- - .:/srv/content:cached # your docs project
- - bundle-cache:/srv/bundle # Docker-managed volume for gems
+ - ${LOCAL_DOCS:-.}:/srv/documentation:cached
+ - .:/srv/content:cached
+ - bundle-cache:/srv/bundle
volumes:
bundle-cache:
\ No newline at end of file