Back to the catalog

Overview

Bundle OKF 0.2 · 28 conceitos · ndx-au/sentinel-docs

Open source Repository Open in the app JSON README (API)

About

# Overview

* [Sentinel Documentation](../sn.docs/ct/index.md) - Sentinel is a git-native orchestration harness -- a single Go binary that discovers, manages, and executes Lua-based workflows from a plain folder of files.

# Guide

* [Getting Started with Sentinel](../sn.docs/ct/getting-started.md) - Welcome to Sentinel. This guide is your starting point -- whether you are a developer who wants to automate workflows, an operations engineer evaluating orchestration tools, or an AI agent consuming this documentation programmatically.
* [Configuration Guide](../sn.docs/ct/configuration-guide.md) - Comprehensive guide to Sentinel configuration, security, deployment, and performance tuning.
* [Kit Development Guide](../sn.docs/ct/kit-development.md) - Complete guide to building kits -- the fundamental unit of organization in Sentinel -- with flows, connectors, modules, forms, pages, databases, CMS content, and templates.
* [Workflows and Patterns Guide](../sn.docs/ct/workflows-and-patterns.

Details

Kind
OKF bundles
Topic
Cloud & DevOps
Publisher
ndx-au
Origin
okf_github
Category
dados
Version
0.2
Last push
2026-09-03T03:04:49Z
Repository state
ativo
Language
HTML
License
Apache-2.0
Added
2026-09-09 19:04:11
Updated
2026-09-09 19:04:11
Origin id
ndx-au/sentinel-docs:notebooklm/index.md

README

# sentinel-docs

Public documentation for Sentinel, implemented as a Sentinel SRE served through
the **fcms** plane (file CMS). Staging: **https://sn-docs.dwp.solutions**.
Production: **https://docs.ndx-sentinel.com** (dedicated VM).

## Layout

```
sentinel.yaml          SRE root config (port 8290, default_kit: sn.docs)
sn.docs/
  kit.yaml             fcms kit (public, cms_full_html, 600s render cache)
  ct/                  Markdown source of truth — one .md per doc, frontmatter:
                       title, description, type, tags, status.
                       index.md is the public landing page (do not overwrite).
  ct/README.md         old-filename → slug mapping (MAP block, used by relink)
  tp/                  Go templates (docs.gohtml = render, home.gohtml = landing)
  pb/                  static assets (style.css, favicon.ico)
  pg/home.yaml         default-kit catch-all page at /
  fl/                  smoke tests (validated by `sentinel sre validate`)
tools/relink.py        rewrites old relative doc links → /slug links
tools/bundle_docs.py   OKF / NotebookLM sidecar (writes notebooklm/ only)
notebooklm/            generated index.md + sentinel-docs.md — not fcms content
```

## Run locally

```bash
sentinel harness start -p . -d --port 8290
curl http://127.0.0.1:8290/hl
# JSON:  /fcms , /fcms/sn/docs/<slug>
# HTML:  /fcms/render/sn/docs/docs/<slug>
# assets: /kt/sn/docs/pb/*
```

## Adding a doc

Add `sn.docs/ct/<slug>.md` with `title`, `description`, and a required OKF
`type` (`Overview`, `Guide`, `Reference`, or `Playbook`), plus `tags` and
`status`. Add the slug to the sidebar nav in `sn.docs/tp/docs.gohtml`, and
link it from `index.md`. Then regenerate the NotebookLM sidecar:

```bash
python3 tools/bundle_docs.py
```

That writes `notebooklm/index.md` and `notebooklm/sentinel-docs.md` only.
Never put generated output in `ct/` — `ct/index.md` is the public homepage.

`ct/` changes are picked up by the harness file watcher — no reload needed.
Changes to `kit.yaml`, `tp/`, or `pg/` require `POST /hl/kt/sn/docs/rl` (kit
reload) or a harness restart.

## Deployment (production VM)

The prod VM runs the same SRE repo. Required setup:

1. **Checkout**: clone `github.com/ndx-au/sentinel-docs` to the VM (polling
   target: `main` branch).
2. **Harness**: `sentinel harness start -p <repo> -d --port 8290`. The harness
   binds `0.0.0.0` — firewall the port so only the host reverse proxy can reach
   it (for example, allow the proxy container’s bridge network to the host
   process).
3. **public_url**: production overrides `public_url` in `sentinel.yaml` to
   `https://docs.ndx-sentinel.com` (or use an env/config override if the
   harness supports one — staging keeps the sn-docs value; do not commit the
   prod override to `main` if it would break staging, prefer per-host config).
4. **Reverse proxy** (Caddy or equivalent) on the VM:
   ```
   docs.ndx-sentinel.com {
       encode gzip
       handle /kt/sn/docs/pb/* {
           reverse_proxy 127.0.0.1:8290
       }
       handle {
           rewrite * /fcms/render/sn/docs/docs{path}
           reverse_proxy 127.0.0.1:8290
       }
   }
   ```
   Public URLs are clean slugs: `/getting-started` →
   `/fcms/render/sn/docs/docs/getting-started`. The JSON API (`/fcms/...`,
   `/cm/...`) is intentionally NOT routed publicly.
5. **Deploy model**: harness-native polling of `main` (a Sentinel trigger/flow
   inside this SRE, not crontab). On new `main`: pull, and the file watcher
   picks up `ct/` changes automatically; `kit.yaml`/`tp/`/`pg/` changes need a
   kit reload (`POST /hl/kt/sn/docs/rl`) or harness restart. Later: a CI
   workflow can replace polling and conditionally issue the kit reload.
6. **main protection**: enable branch protection + PR workflow once prod is
   operational.

## Staging wiring

- Point the staging DNS name (`sn-docs.dwp.solutions`) at the staging host
  behind a private reverse proxy, with TLS appropriate for that zone.
- Reverse-proxy to the local harness (`127.0.0.1:8290` or the Docker host
  gateway equivalent) using the same rewrite rules as the prod block above.

More