Skip to content

Python API tree

chatdemo
+-- __version__
+-- cli.main                       # Click adapter
+-- config.ChatdemoConfig          # Existing ChatEnv schema
+-- hosting.Demo                   # Demo metadata
+-- hosting.list_demos(home=None)
+-- hosting.add_demo(directory, slug, title, description="", home=None)
+-- hosting.remove_demo(slug, home=None)
+-- hosting.export_site(destination, home=None)
+-- hosting.create_server(host="127.0.0.1", port=8769, home=None)

Reusable calls

from pathlib import Path
from chatdemo.hosting import add_demo, export_site, list_demos, create_server

home = Path("./catalog")
add_demo(Path("./public"), "my-demo", "My demo", home=home)
for demo in list_demos(home):
    print(demo.summary())
export_site(Path("./site-output"), home=home)

server = create_server(home=home, port=8769)
try:
    server.serve_forever()
finally:
    server.server_close()

Invalid catalog inputs raise ValueError; filesystem and network errors retain OSError. Demo.summary() omits local source paths. The CLI is a thin adapter. ChatdemoConfig remains registered with ChatEnv; Web features do not consume the template API key.