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
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.
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.
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.
Another feature added is support for pausing idle apps. Apps which have not received any API calls for some time are automatically terminated. This allows you to run hundreds of Streamlit apps on one machine, giving a Cloud Run type interface on your own hardware. Idle-pause works well for internal tools since many of the apps might be idle much of the time. The idle-pause feature can be disabled for specific apps, since it can impact the Streamlit in-memory cache.
Thanks for stopping by! We use cookies to help us understand how you interact with our website.
By clicking βAccept allβ, you consent to our use of cookies. For more information, please see our privacy policy.
Cookie settings
Strictly necessary cookies
These cookies are necessary for the website to function and cannot be switched off. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms.
Performance cookies
These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our site. They help us understand how visitors move around the site and which pages are most frequently visited.
Functional cookies
These cookies are used to record your choices and settings, maintain your preferences over time and recognize you when you return to our website. These cookies help us to personalize our content for you and remember your preferences.
Targeting cookies
These cookies may be deployed to our site by our advertising partners to build a profile of your interest and provide you with content that is relevant to you, including showing you relevant ads on other websites.