kctl-outline
Kodemeio Outline CLI — manages Outline wiki instances and syncs markdown documentation between git repositories and one or more Outline collections.
Install
cd packages/kctl-outline
uv sync --extra dev
uv run kctl-outline --help
Or via the workspace from the repo root:
uv sync
uv run --package kctl-outline kctl-outline --help
Configuration
Like other kctl-* tools, configuration lives at ~/.config/kodemeio/config.yaml. Each profile may declare an outline service block:
profiles:
kod:
outline:
url: https://outline.kodeme.io
token: env:OUTLINE_API_TOKEN_KOD
tpp:
outline:
url: https://outline.idtpp.com
token: env:OUTLINE_API_TOKEN_TPP
Add a profile interactively:
kctl-outline config init
kctl-outline config add tpp --url https://outline.idtpp.com --token <TOKEN>
kctl-outline config use kod
Commands
| Group | Purpose |
|---|---|
documents |
List, create, update, delete, move documents |
collections |
Manage collections |
users, groups |
User and group management |
shares |
Public share links |
comments, events, revisions |
Read-only metadata |
templates, stars, tokens |
Misc admin |
health, dashboard, doctor |
Diagnostics (doctor checks URL + auth config) |
search |
Search across documents |
sync |
Sync markdown docs between repos and Outline (see below) |
Sync subcommand
kctl-outline sync is the primary integration point with kodemeio-docs. It supports multi-mapping configs (.outline-sync.yaml v2) with three direction modes:
push— git is the source of truth. Markdown files are pushed to Outline.pull— Outline is the source of truth. Documents are pulled into the repo.mixed— per-file.ssotmarkers decide direction.
# Dry-run a sync from a repo
kctl-outline sync run /path/to/kodemeio-docs --config .outline-sync.kod.yaml
# Apply
kctl-outline sync run /path/to/kodemeio-docs --config .outline-sync.kod.yaml --no-dry-run
# Filter to a specific direction
kctl-outline sync run . --config .outline-sync.kod.yaml --mode push --no-dry-run
# Inspect tracked state
kctl-outline sync status
kctl-outline sync diff /path/to/repo
The full spec lives in kodemeio-docs/superpowers/specs/2026-04-10-docs-outline-restructure-design.md.
Profile-aware sync routing
When a sync config declares profile: tpp, kctl-outline sync run builds a fresh client using that profile's URL and token, regardless of the active CLI profile. This means the same machine can push to both outline.kodeme.io and outline.idtpp.com without switching profiles between commands.
Layout
packages/kctl-outline/
├── pyproject.toml
├── README.md
├── src/kctl_outline/
│ ├── cli.py # Typer entry point
│ ├── commands/ # one module per Outline subresource
│ │ ├── sync.py # the Plan A/D sync subcommand
│ │ ├── documents.py
│ │ ├── collections.py
│ │ └── …
│ └── core/
│ ├── client.py # httpx wrapper
│ ├── config.py # profile resolution
│ ├── sync_config.py # SyncConfig v2 schema + v1 auto-upgrade
│ ├── sync_planner.py # pure plan_push_mapping
│ ├── sync_pull.py # pull direction (Outline → disk)
│ ├── sync_state.py # MappingSyncEntry + v1→v2 migration
│ └── sync_ssot.py # .ssot marker walker
└── tests/ # 30+ tests (pytest)
Tests
cd packages/kctl-outline
uv run --extra dev pytest tests/ -v
Metadata
Release files for kctl-outline 0.10.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| kctl_outline-0.10.3.tar.gz | 39.1 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| kctl_outline-0.10.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 88.5 kB
Release files / kctl_outline-0.10.3.tar.gz
| Download URL | kctl_outline-0.10.3.tar.gz |
|---|---|
| Size | 39.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6c699a49f4dd79b939c11c913d8986e1de4b4a3a03d55d76faab318018da3062
|
|
BLAKE2b-256 checksum How to use checksums |
769d1591e45d57ed0b4792ec5fec8eba3c04e64eb30fd134f3aa0373d1f79c8d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / kctl_outline-0.10.3-py3-none-any.whl
| Download URL | kctl_outline-0.10.3-py3-none-any.whl |
|---|---|
| Size | 49.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d97597c656d742b5889ecaf2612370a3ae7556cfdba8f5ee051911fdb8ccfcd1
|
|
BLAKE2b-256 checksum How to use checksums |
a716c002f976184c03e6f5dcdf324dad77613ad40b047e82c86f96fad8799b49
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for kctl-outline 0.10.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.