Skip to main content

llmsx

A CLI and an optional Textual TUI over the llms-explorer concept tree and llms-concept-abstractor concept packs, plus a thin invocation layer over the Claude skills SDK.

Scope, precisely. llmsx tree … and llmsx concepts list/show/serve are read-only and install with zero third-party dependencies. llmsx tui and llmsx concepts tui need the tui extra; the concept-pack TUI's "edit" action opens $EDITOR on a pack file, which is a write. llmsx family and llmsx optimize need the skills extra and make an outbound network call to a model provider — see "Running a skill" below for exactly what that call does and does not do.

Install

pip install llmsx                 # tree + concepts list/show/serve only
pip install 'llmsx[tui]'          # + the Textual browsers
pip install 'llmsx[skills]'       # + `llmsx family` / `llmsx optimize`

Browsing the concept tree (llmsx tree)

llmsx tree show                     # indented tree, frontier marked ·
llmsx tree show "LLMs.txt" --depth 2
llmsx tree detail <slug>            # one node's fields
llmsx tree search caching           # concept + alias substring
llmsx tree frontier [slug]          # named but never researched
llmsx tui                           # the Textual tree browser (pip install 'llmsx[tui]')

Data comes from the site's generated site/src/data/tree.json (site/tools/gen_tree.py). Override with --data <path> or $LLMSX_TREE. A future release may add --api <url> serving the same shape from a live service instead of a checked-out file.

Concept packs (llmsx concepts)

A different data model from the tree above: a concept pack is a directory <slug>.llms/ built by the llms-concept-abstractor skill (/lca) or llms-deep-optimizer --family (/ldo), each with its own manifest.json, concept-graph.json and llms-family markdown files.

llmsx concepts list                 # catalog every pack — summary, useful_for, related terms
llmsx concepts list --query caching # substring filter over name/summary/related terms
llmsx concepts show <slug>          # one pack's summary, facets, related terms, files
llmsx concepts serve <slug>         # llms.txt to stdout — pipeable: > out.md
llmsx concepts serve <slug> --file llms-full.txt
llmsx concepts tui                  # the Textual concept-pack browser (pip install 'llmsx[tui]')

<slug> may be an exact slug or a case-insensitive substring of the slug or concept name; an ambiguous substring lists its candidates instead of guessing. serve --file accepts one of llms.txt, llms-full.txt, llms-small.txt, llms-facts.txt, llms-vocabulary.txt, concept-graph.json, manifest.json.

Data comes from ~/.global-ai-hub/llms-concepts by default. Override with --data <path> (under concepts) or $LLMSX_CONCEPTS_PATH — a different env var from $LLMSX_TREE above, because it is a different data model. Put --data after concepts (or its subcommand); a top-level --data before concepts binds to the tree's flag instead and llmsx refuses to run rather than silently falling back to the default concept-packs directory.

Development

Install for development from a checkout of this monorepo:

cd llmsx && ../hub/.venv/bin/python -m pip install -e '.[dev]'

Prefer the installed llmsx command. python -m llmsx also works, except from the directory that contains this project folder (the repo root): there the llmsx/ directory itself shadows the installed package as a namespace package. llmsx … and pytest llmsx/tests are unaffected — llmsx/pyproject.toml's [tool.pytest.ini_options] puts this package's own directory on sys.path regardless of where pytest is invoked from.

Running a skill (llmsx.skills)

llmsx.skills loads a SKILL.md — this repo's skills/<name>/ or ~/.claude/skills/<name>/ — and runs it against a model.

from llmsx.skills import available_skills, load_skill, run_skill

available_skills()                       # every skill on the search path
skill = load_skill("notes-to-llms-txt")  # SkillNotFoundError lists the paths tried
skill.description, skill.model           # frontmatter; `model` is the skill's own default

run = run_skill(skill, "…my messy notes…")     # needs pip install 'llmsx[skills]'
run = run_skill(skill, "…", client=my_client)  # or inject any transport
print(run.text, run.model, run.usage)

Search order: $LLMSX_SKILL_PATH (os.pathsep-joined) first when set, then every skills/ directory at or above the current working directory — nearest first, not just the nearest one — then ~/.claude/skills last. That matters: it means llmsx family / llmsx optimize, run from inside any directory that happens to contain a skills/<name>/SKILL.md, will run that file's instructions rather than a global copy. _run_skill_cli prints the resolved SKILL.md path to stderr before every call for exactly this reason — a SKILL.md is not automatically trusted input, and this is the way to notice a shadowed or planted one before it runs. Pass include_references=True to append the skill's references/*.md to the system prompt (bounded — see Skill.read_references's docstring).

client is anything with .messages.create(**kwargs) (the Anthropic SDK shape) or a plain callable taking the same kwargs — the callable form is how the tests run offline, and how a caller stubs, records or caches a call without importing the SDK.

What this is not. A thin invocation layer: one model turn, carrying the skill's instructions verbatim. The skills themselves describe multi-pass loops, subagent fan-out, filesystem locks and concept-tree writes — behaviour belonging to an agent harness with tools. run_skill drives none of it; a caller who needs the loop drives it. The JS sibling (../llmsx-js) has the same API and the same boundary.

llmsx family <topic> and llmsx optimize <file-or-text> are thin CLI wrappers over run_skill for concept-family-explorer and llms-deep-optimizer respectively (needs pip install 'llmsx[skills]'). Both print a one-line disclaimer to stderr before the model's output: this is one model turn against the skill's instructions, not its full multi-pass loop.

The two Textual browsers, and which hub screen each one is (or isn't)

Two different things share the name "Concepts" here, deliberately kept apart:

  • llmsx tui's ConceptBrowser walks the SEO research tree (tree.json, above) — a Tree widget, a filter Input widened to aliases, a detail RichLog, frontier concepts drawn dim italic with a (frontier) label. It has no hub counterpart to port: it is a from-scratch, read-only browser over data this package already owns, with no write path (there is nowhere for it to write to — see "Scope, precisely" above).
  • llmsx concepts tui's ConceptPackBrowser is the actual port of ~/.global-ai-hub/scripts/hub_manager/app.py's TabPane("Concepts": a DataTable listing concept packs, the same filter-by-slug/name/summary behaviour, a detail RichLog with summary/facets/related terms/files, and an "edit in $EDITOR" action. Indexing is not ported — it depends on docset_indexer.py, ChromaDB and an Ollama pool, hub-specific heavy dependencies this package does not carry; the Index button says so.

Metadata

Release files for llmsx 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for llmsx 0.1.0
File Size Uploaded Provenance Actions
llmsx-0.1.0.tar.gz 53.3 kB Without provenance Details for llmsx-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for llmsx 0.1.0
File Interpreter ABI Platform Actions
llmsx-0.1.0-py3-none-any.whl Python 3 none any Details for llmsx-0.1.0-py3-none-any.whl

Total release size: 94.5 kB

Release files / llmsx-0.1.0.tar.gz

Download URL llmsx-0.1.0.tar.gz
Size 53.3 kB
Tags Source
SHA-256 checksum
How to use checksums
45191df7509c7e8b432194ac13592d842535922b8f7fa04061731f20445f98d1
BLAKE2b-256 checksum
How to use checksums
8653bdb9aa98f82e58b905202347d34c556e6a61f9926cd54c035f235d0fca28
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":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / llmsx-0.1.0-py3-none-any.whl

Download URL llmsx-0.1.0-py3-none-any.whl
Size 41.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2afd50f923fb3067be0900d22ac5421d628c2c8064d8b04e00e578f2da597e70
BLAKE2b-256 checksum
How to use checksums
8f67574ced977abc67c49623e40880dfdf0e623abe9cb6bde448a2a5e0ddeed1
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":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for llmsx 0.1.0

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.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page