Clace : Streamlit app deployment platform

Hi,
I have been building Clace, an open source web app deployment platform for internal tools. Clace makes it easy for you to deploy apps built using Streamlit across a team. https://clace.io/ has a demo of using Clace. Clace runs on Linux/Windows/OSX and works with Docker/Podman. Install Clace using instructions at Quick Start – Clace. After starting Clace server (and making sure Docker/Podman is running), apps can be installed by running

clace app create --spec python-streamlit --branch master --approve github.com/streamlit/streamlit-example /streamlit
clace app create --spec python-streamlit --param app_file=hello --approve - /streamlit_hello

The first command checks out the streamlit-example repo, builds an image and starts the container. The second command deploys the hello app, in another container. The apps are running at https://localhost:25223/streamlit and https://localhost:25223/streamlit_hello. Apps can be installed at a domain level also, like app1.localhost:/. See Security – Clace for private repo access.

Code and config changes are applied using a blue-green (staged) deployment, allowing you to verify changes before making them live. Adding --dev to the create command creates the app in development mode. Adding OAuth based authentication is easy, without requiring any app code changes. See App Authentication – Clace for details.

Do let me know any feedback, either here or at claceio/clace Β· Discussions Β· GitHub.

Regards
Ajay

3 Likes

Request to make a video of streamlit deployment using clace.
Also info about pricing please share.
Thanks
Sai

https://clace.io/intro_dark.mp4 shows the usage from CLI. I do not have a video (with audio recording) yet, will look into creating one.

In terms of pricing, it is open source, Apache 2 licensed. You run it on your own hardware, for free. The core functionality and the CLI interface will remain Apache 2 licensed.

Do let me know any feedback.

How does one handle secrets data?

See Overview – Clace for info.

Any params passed as app create --param my_password=abc to the app creation command are passed to the container as environment variables. The app code can read them from the env as usual.

If you want a param to be mandatory, then copy the file appspecs/python-streamlit/params.star at main Β· claceio/appspecs Β· GitHub into your app code. Add entries for the new params you want. Do not specify a default value. That way, any time an app is created from that repo, a param value has to be specified for the new param(s).

Currently, the value specified for the params are persisted in clear text in the Clace metadata (a sqlite database in $CL_HOME). I plan to look at adding integrations with secret managers to avoid that.