AI-powered content framework for Streamlit — create presentations, courses, and web-books with Claude or Cursor, no coding required.
Project description
StreamTeX
AI-powered content framework for Streamlit — create presentations, courses, and web-books with Claude or Cursor. No coding required.
StreamTeX combines a modular block architecture with AI-powered workflows. Describe your project in natural language, and let Claude or Cursor build it — or use the Python API for full control.
Getting Started
StreamTeX supports 4 installation levels. Pick the one that fits your needs.
Quick Start (minimal, no workspace)
From zero to a running project in 3 commands:
uv tool install "streamtex[cli]" -U
stx project new my-project
cd my-project && uv sync && uv run streamlit run book.py
Standard Setup (recommended)
Full workspace with rich templates, documentation, and Claude AI profiles:
uv tool install "streamtex[cli]" -U
mkdir streamtex-dev && cd streamtex-dev
stx workspace init .
stx workspace update
stx project new my-project --template project
cd projects/my-project
stx claude install project .
uv run streamlit run book.py
Prerequisites: Python 3.11+, git, uv.
Zero-Code with Claude or Cursor
Install StreamTeX and a Claude AI profile, then let the AI build your project:
uv tool install "streamtex[cli]" -U
mkdir streamtex-dev && cd streamtex-dev
stx workspace init . && stx workspace update
stx project new my-project
cd projects/my-project
stx claude install project .
Open in Claude Code or Cursor, then use slash commands:
/project:project-init
> "Create a Docker course with 12 slides, dark theme,
> table of contents and page navigation"
The AI agent designs the project structure, proposes it for your approval, and generates all files — blocks, styles, book.py — ready to run:
uv run streamlit run book.py
See the AI Guide for all commands, agents, and workflows.
Code-First with Python
import streamlit as st
import streamtex as sx
from streamtex.styles.core import Style
st.set_page_config(page_title="My Book", layout="wide")
style = Style("color: navy; font-size: 1.2em;", "my-style")
sx.st_write(style, "Hello StreamTeX!")
uv run streamlit run app.py
Manual Installation (without stx CLI)
pip install streamtex
git clone https://github.com/nicolasguelfi/streamtex-claude.git
mkdir my-project && cd my-project
python ../streamtex-claude/install.py project .
uv run streamlit run book.py
Workspace Presets
The stx workspace init command supports 4 presets:
| Preset | Repos | Use case |
|---|---|---|
basic |
none | Workspace only, upgrade later |
user |
streamtex-claude | + Claude AI profiles |
standard (default) |
streamtex-docs + streamtex-claude | + rich templates + local docs |
developer |
all 3 repos | + library source + editable install |
stx workspace init . --preset user # Claude profiles only
stx workspace init . # standard (default)
stx workspace init . --preset developer # full developer setup
Upgrade an existing workspace:
stx workspace upgrade developer
stx workspace update
AI-Powered Features
StreamTeX ships with 22 slash commands, 4 specialized agents, and 10 block templates for AI-assisted development.
Project Creation & Customization
| Command | What it does |
|---|---|
/project:project-init |
Create a complete project from a natural-language description |
/project:project-customize |
Change theme, typography, navigation without editing code |
/project:course-generate |
Generate book.py structure from a CSV block list |
/project:collection-new |
Create a multi-project hub |
Design & Content
| Command | What it does |
|---|---|
/designer:slide-new |
Create slides from descriptions |
/designer:slide-audit |
Validate design rules (font sizes, line lengths, spacing) |
/designer:slide-fix |
Auto-fix design violations |
/designer:style-audit |
Check styles for consistency |
Migration
| Command | What it does |
|---|---|
/migration:html-migrate |
Convert HTML (Google Docs) to StreamTeX blocks |
/migration:html-convert-batch |
Batch conversion of multiple files |
/migration:conversion-audit |
Audit conversion quality |
AI Agents
| Agent | Role |
|---|---|
| Project Architect | Designs project structure from natural language |
| Slide Designer | Creates pedagogically structured, polished slides |
| Slide Reviewer | Reviews and validates completed slides |
| Presentation Designer | Specialist for live projection (large fonts, minimal text) |
See the AI Guide for the complete reference.
Claude & Cursor Integration
StreamTeX provides installable AI profiles via streamtex-claude:
| Profile | Audience | Commands | Agents |
|---|---|---|---|
| project | Content creators | 19 | 3 |
| presentation | Live presenters | +3 | +1 |
| documentation | Manual authors | 10 | 2 |
| library | Library developers | 3 | — |
Install a profile:
stx claude install project ./my-project
Features
- Styled text —
st_writewith tuple support for inline mixed-style text - CSS Grid layouts —
st_gridwith responsive columns - Block containers —
st_block/st_spancontext managers - Lists —
st_listwith ul/ol, custom bullets, centered alignment - Images —
st_imagewith base64 encoding and MIME detection - Code blocks —
st_codewith Pygments syntax highlighting - Diagrams — Mermaid, PlantUML, TikZ with pan/zoom
- LaTeX — math formulas and full documents
- Bibliography — BibTeX/RIS/CSL-JSON import, citations, formatted references
- Book orchestration —
st_bookwith paginated and continuous modes - Table of Contents — auto-numbering and anchor navigation
- Navigation markers — slide-like PageUp/PageDown navigation
- Collections — multi-project hubs with TOML configuration
- HTML export — self-contained dual-rendering pipeline
- Style composition —
Styleobjects with+/-operators - Zoom controls — CSS-based width and zoom adjustments
- Block inspector — live code editor in sidebar (optional)
- Block helpers — DI-injectable helpers with 3 usage modes
Documentation
Online manuals (read & explore)
Examples (source code)
The manuals are also available as source code — clone and run them locally to study the examples:
git clone https://github.com/nicolasguelfi/streamtex-docs
cd streamtex-docs
uv sync
uv run streamlit run manuals/stx_manual_intro/book.py
See streamtex-docs for the full list of example projects.
Reference
- AI Guide — zero-code workflows with Claude/Cursor
- Cheatsheet (EN)
- Coding Standards
Project Structure
A StreamTeX project follows this layout:
my-project/
├── .claude/ # AI profiles (commands, skills, agents)
├── .streamlit/
│ └── config.toml # enableStaticServing = true
├── blocks/
│ ├── __init__.py # Block registry
│ └── bck_intro.py # Your blocks (build() function each)
├── static/
│ └── images/ # Static assets
├── custom/
│ └── styles.py # Project-specific styles
└── book.py # Entry point with st_book()
Installation
# Install or upgrade the CLI as a global tool
uv tool install "streamtex[cli]" -U
# Or as a project dependency
uv add streamtex
Optional extras:
uv add "streamtex[inspector]" # Live code inspector sidebar
uv add "streamtex[cli]" # stx CLI commands
Prerequisites
- Python >= 3.11
- uv (recommended package manager)
- git
Project Configuration
StreamTeX projects using from streamtex import * require this ruff config
in pyproject.toml (automatically generated by stx project new):
[tool.ruff.lint]
ignore = ["F403", "F405", "E701", "E741"]
If your project uses [tool.uv.sources] for editable installs, set
UV_NO_SOURCES=1 in CI environments so uv resolves from PyPI instead
of local paths.
Keeping Up to Date
Update the CLI
The stx CLI is installed as a global tool with its own frozen copy of
the library. You must upgrade it explicitly after each release:
uv tool install "streamtex[cli]" -U
Update your workspace
cd streamtex-dev/
stx workspace update # pulls repos, syncs deps, updates profiles
Fine-grained control:
stx workspace update --skip-sync # skip uv sync
stx workspace update --skip-profiles # skip Claude profile update
Update a standalone project (no workspace)
cd my-project/
uv add streamtex --upgrade # update the library dependency
Use
/stx-guide updateinside Claude Code for guided assistance.
Contributing
See CONTRIBUTING.md for guidelines on code, content, and AI profile contributions.
Support the Project
If StreamTeX is useful to you, consider sponsoring the project to help maintain and improve it.
License
BUSL-1.1 — Copyright (c) 2026 Nicolas Guelfi Converts to Apache 2.0 on 2030-11-29.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file streamtex-0.3.6.post3.tar.gz.
File metadata
- Download URL: streamtex-0.3.6.post3.tar.gz
- Upload date:
- Size: 167.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
84535c8cd7450fbf1b22b3ffc09c018f99d57454095f6acfd18a22716dc8df4e
|
|
| MD5 |
871947a5d29a1bdf7e7ef98118da6d71
|
|
| BLAKE2b-256 |
7ac882a12847dae033affc1478fe6500714fec8fdb123f28252522daa1d071e5
|
Provenance
The following attestation bundles were made for streamtex-0.3.6.post3.tar.gz:
Publisher:
publish.yml on nicolasguelfi/streamtex
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
streamtex-0.3.6.post3.tar.gz -
Subject digest:
84535c8cd7450fbf1b22b3ffc09c018f99d57454095f6acfd18a22716dc8df4e - Sigstore transparency entry: 1059730218
- Sigstore integration time:
-
Permalink:
nicolasguelfi/streamtex@05f11ff8a258bd5e6634d6f699a8fede07732707 -
Branch / Tag:
refs/tags/v0.3.6.post3 - Owner: https://github.com/nicolasguelfi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@05f11ff8a258bd5e6634d6f699a8fede07732707 -
Trigger Event:
release
-
Statement type:
File details
Details for the file streamtex-0.3.6.post3-py3-none-any.whl.
File metadata
- Download URL: streamtex-0.3.6.post3-py3-none-any.whl
- Upload date:
- Size: 185.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e0f4282fbc7602c6568f53cffd8a05259f24d47ee04ed28914a39f9ac47f4a89
|
|
| MD5 |
30859395bb5feafc6e6aade37bf44c09
|
|
| BLAKE2b-256 |
68d337796a4e67998800e3facc2b284ddb2cc19b82ceb8f74a602d9a9d6c22f5
|
Provenance
The following attestation bundles were made for streamtex-0.3.6.post3-py3-none-any.whl:
Publisher:
publish.yml on nicolasguelfi/streamtex
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
streamtex-0.3.6.post3-py3-none-any.whl -
Subject digest:
e0f4282fbc7602c6568f53cffd8a05259f24d47ee04ed28914a39f9ac47f4a89 - Sigstore transparency entry: 1059730259
- Sigstore integration time:
-
Permalink:
nicolasguelfi/streamtex@05f11ff8a258bd5e6634d6f699a8fede07732707 -
Branch / Tag:
refs/tags/v0.3.6.post3 - Owner: https://github.com/nicolasguelfi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@05f11ff8a258bd5e6634d6f699a8fede07732707 -
Trigger Event:
release
-
Statement type: