Sandbox
@icip-cas/PPTAgent

Agentic PowerPoint generation framework for CLI and web UI

PPTAgent generates presentations through an agent workflow that plans an outline, drafts slides, and iterates on edits. The newer DeepPresenter runtime adds a CLI, web UI, MCP server support, offline mode, and sandboxed tool execution for richer deck creation.

5,015 stars588 forksPythonUpdated 9d ago
Who it's for

Builders who want to turn documents, prompts, and attachments into presentation decks with an agent workflow.

What it delivers

You can generate and refine PowerPoint slides with a structured agent process instead of assembling every slide by hand.

What it does

CLI generation

Creates presentations from prompts and attachments with `pptagent generate`.

Interactive setup

Helps you create and update local config with `pptagent onboard`.

Web UI runtime

Provides a browser-based interface through `python webui.py` and Docker Compose.

MCP server support

Lets the system connect to external tools and services through MCP configuration.

Offline and sandboxed execution

Supports local inference, sandbox images, and offline mode for controlled runs.

Evaluation workflow

Includes PPTEval code for checking content, design, and coherence of generated decks.

How to get it

  1. 1If you use the CLI, pptagent onboard can help create and update these configurations…
    cp deeppresenter/config.yaml.example deeppresenter/config.yaml
    cp deeppresenter/mcp.json.example deeppresenter/mcp.json
  2. 2Start the app
    python webui.py

README

https://github.com/icip-cas/PPTAgent

We strongly recommend deploying our fine-tuned model for the best experience with our agent project. According to our experiments, it significantly outperforms existing open-source models.

FormatHuggingFaceModelScope
GGUF (Quantized)Forceless/DeepPresenter-9B-GGUFforceless/DeepPresenter-9B-GGUF
Full WeightsForceless/DeepPresenter-9Bforceless/DeepPresenter-9B

📅 News

  • [2026/04] 🎉 DeepPresenter accepted to ACL 2026!
  • [2026/03] 🤗 We released fine-tuned models and taskset on Hugging Face.
  • [2026/01] 🆕 Freeform & template generation now support PPTX export and offline mode. Context management added to prevent context overflow.
  • [2025/12] 🔥 Released DeepPresenter codebase with major upgrades — Deep Research Integration, Free-Form Visual Design, Autonomous Asset Creation, Text-to-Image Generation, and an Agent Environment with sandbox & 20+ tools.
  • [2025/09] 🛠️ MCP server support added — see MCP Server for configuration details.
  • [2025/08] 🎉 PPTAgent accepted to EMNLP 2025!
  • [2025/05] ⭐ Reached 1,000 stars on GitHub!
  • [2025/01] 🔓 Open-sourced the PPTAgent codebase.

Usage 📖

[!IMPORTANT] Windows is not supported. If you are on Windows, please use WSL.

We strongly recommend starting with the CLI and minimum task to confirm dependencies and environment is configured correctly.

Configuration

If you use the CLI, pptagent onboard can help create and update these configurations interactively. If you use Docker Compose or build from source, you should prepare them manually:

cp deeppresenter/config.yaml.example deeppresenter/config.yaml
cp deeppresenter/mcp.json.example deeppresenter/mcp.json

Optional Services That Improve Quality

The following services can noticeably improve generation quality, especially for research depth, PDF parsing, and visual asset creation:

If you want a fully offline setup, deploy MinerU locally and set offline_mode: true in deeppresenter/config.yaml to avoid loading network-dependent tools such as web search.

More configurable variables can be found in constants.py.

1. Personal Use / OpenClaw Integration: CLI

[!NOTE] On macOS, the CLI may automatically install several local dependencies, including Homebrew, Node.js, Docker, poppler, Playwright, and llama.cpp.

On Linux, you should prepare the environment by yourself.

Use this mode if you want the fastest local setup or want to plug DeepPresenter into OpenClaw through the CLI.

# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh

# First-time interactive setup
uvx pptagent onboard

# Generate a presentation
uvx pptagent generate "Single Page with Title: Hello World" -o hello.pptx

# Generate with attachments
uvx pptagent generate "Q4 Report" \
  -f data.xlsx \
  -f charts.pdf \
  -p "10-12" \
  -o report.pptx
CommandDescription
pptagent onboardInteractive configuration wizard
pptagent generateGenerate presentations
pptagent configView current configuration
pptagent resetReset configuration
pptagent serveStart the local inference service used by the CLI

Docker Images

DeepPresenter publishes two runtime images:

Local image namePurposeDocker Hub1ms.run mirror
deeppresenter-hostHost service for the web UI and orchestration runtimeforceless/deeppresenter-hostdocker.1ms.run/forceless/deeppresenter-host
deeppresenter-sandboxSandbox image used by the runtime for isolated tool executionforceless/deeppresenter-sandboxdocker.1ms.run/forceless/deeppresenter-sandbox

2. Minimal Setup / Development: Build From Source

Use this mode if you want the smallest abstraction layer and full control over dependencies during development.

uv pip install -e .
playwright install-deps
playwright install chromium
npm install --prefix deeppresenter/html2pptx
modelscope download forceless/fasttext-language-id

docker pull forceless/deeppresenter-sandbox
docker pull forceless/deeppresenter-host
docker tag forceless/deeppresenter-sandbox deeppresenter-sandbox
docker tag forceless/deeppresenter-host deeppresenter-host

# or pull through the 1ms.run mirror
docker pull docker.1ms.run/forceless/deeppresenter-sandbox
docker pull docker.1ms.run/forceless/deeppresenter-host
docker tag docker.1ms.run/forceless/deeppresenter-sandbox deeppresenter-sandbox
docker tag docker.1ms.run/forceless/deeppresenter-host deeppresenter-host

# or build from dockerfile
docker build -t deeppresenter-sandbox -f deeppresenter/docker/SandBox.Dockerfile .
docker build -t deeppresenter-host -f deeppresenter/docker/Host.Dockerfile .

Start the app:

python webui.py

3. Server Deployment: Docker Compose

Use this mode for a stable server environment with explicit dependencies.

# Pull the public images to avoid build from source
docker pull forceless/deeppresenter-sandbox
docker pull forceless/deeppresenter-host
docker tag forceless/deeppresenter-sandbox deeppresenter-sandbox
docker tag forceless/deeppresenter-host deeppresenter-host

# Or pull through the 1ms.run mirror
docker pull docker.1ms.run/forceless/deeppresenter-sandbox
docker pull docker.1ms.run/forceless/deeppresenter-host
docker tag docker.1ms.run/forceless/deeppresenter-sandbox deeppresenter-sandbox
docker tag docker.1ms.run/forceless/deeppresenter-host deeppresenter-host

# Or build from source
docker build -t deeppresenter-sandbox -f deeppresenter/docker/SandBox.Dockerfile .
docker build -t deeppresenter-host -f deeppresenter/docker/Host.Dockerfile .

# Start the host service
docker compose up -d

The service exposes the web UI on http://localhost:7861.

Case Study 💡

  • Prompt: Please present the given document to me.

图片1 图片2 图片3 图片4 图片5 图片6 图片7 图片8 图片9 图片10
  • Prompt: 请介绍小米 SU7 的外观和价格

图片1 图片2 图片3 图片4 图片5 图片6
  • Prompt: 请制作一份高中课堂展示课件,主题为“解码立法过程:理解其对国际关系的影响”

图片1 图片2 图片3 图片4 图片5 图片6 图片7 图片8 图片9 图片10 图片11 图片12 图片13 图片14 图片15

Contributors 🌟

Force1ess/
Force1ess
Puelloc/
Puelloc
hongyan/
hongyan
BrandonHu/
BrandonHu
Dnoob/
Dnoob
Sadahlu/
Sadahlu
lnennnn/
lnennnn
KurisuMakiseSame/
KurisuMakiseSame
Aarish
Aarish Alam
Angelen/
Angelen
Eliot
Eliot White
EvolvedGhost/
EvolvedGhost
ISCAS-zwl/
ISCAS-zwl
白雨
白雨 | James Brown
JunZhang/
JunZhang
Open
Open AI Tx
Sense_wang/
Sense_wang
SuYao/
SuYao
Zakir
Zakir Jiwani
Zhenyu/
Zhenyu

Star History Chart

Citation 🙏

If you find this project helpful, please use the following to cite it:

@inproceedings{zheng-etal-2025-pptagent,
    title = "{PPTA}gent: Generating and Evaluating Presentations Beyond Text-to-Slides",
    author = "Zheng, Hao  and
      Guan, Xinyan  and
      Kong, Hao  and
      Zhang, Wenkai  and
      Zheng, Jia  and
      Zhou, Weixiang  and
      Lin, Hongyu  and
      Lu, Yaojie  and
      Han, Xianpei  and
      Sun, Le",
    editor = "Christodoulopoulos, Christos  and
      Chakraborty, Tanmoy  and
      Rose, Carolyn  and
      Peng, Violet",
    booktitle = "Proceedings of the 2025 Conference on Empirical Methods in Natural Language Processing",
    month = nov,
    year = "2025",
    address = "Suzhou, China",
    publisher = "Association for Computational Linguistics",
    url = "https://aclanthology.org/2025.emnlp-main.728/",
    doi = "10.18653/v1/2025.emnlp-main.728",
    pages = "14413--14429",
    ISBN = "979-8-89176-332-6",
    abstract = "Automatically generating presentations from documents is a challenging task that requires accommodating content quality, visual appeal, and structural coherence. Existing methods primarily focus on improving and evaluating the content quality in isolation, overlooking visual appeal and structural coherence, which limits their practical applicability. To address these limitations, we propose PPTAgent, which comprehensively improves presentation generation through a two-stage, edit-based approach inspired by human workflows. PPTAgent first analyzes reference presentations to extract slide-level functional types and content schemas, then drafts an outline and iteratively generates editing actions based on selected reference slides to create new slides. To comprehensively evaluate the quality of generated presentations, we further introduce PPTEval, an evaluation framework that assesses presentations across three dimensions: Content, Design, and Coherence. Results demonstrate that PPTAgent significantly outperforms existing automatic presentation generation methods across all three dimensions."
}

@misc{zheng2026deeppresenterenvironmentgroundedreflectionagentic,
      title={DeepPresenter: Environment-Grounded Reflection for Agentic Presentation Generation},
      author={Hao Zheng and Guozhao Mo and Xinru Yan and Qianhao Yuan and Wenkai Zhang and Xuanang Chen and Yaojie Lu and Hongyu Lin and Xianpei Han and Le Sun},
      year={2026},
      eprint={2602.22839},
      archivePrefix={arXiv},
      primaryClass={cs.AI},
      url={https://arxiv.org/abs/2602.22839},
}

Files in the repo

Repository payload17 top-level entries
  • .github
  • deeppresenter
  • pptagent
  • resource
  • .dockerignore
  • .gitignore
  • .pre-commit-config.yaml
  • AGENTS.md
  • CLAUDE.md
  • docker-compose.yml
  • LICENSE
  • MANIFEST.in
  • outline.json
  • pyproject.toml
  • README.md
  • uv.lock
  • webui.py

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More frameworks & sdks

rome-os/
rome
rome-os/romeFrameworks & SDKs

Rome is the agentic OS.

488
modelcontextprotocol/
python-sdk

The official Python SDK for Model Context Protocol servers and clients

24k
NateBJones-Projects/OB1Frameworks & SDKs

Open Brain — The infrastructure layer for your thinking. One database, one AI gateway, one chat channel — any AI plugs in. No middleware, no SaaS.

4.6k
VoltAgent/voltagentFrameworks & SDKs

AI Agent Engineering Platform built on an Open Source TypeScript AI Agent Framework

11k