Structured AI system with emebeddable chatbot
Project description
Darkglass
Darkglass is a lightweight, embeddable chatbot designed for small colleges, providing prospective students with automated responses while logging interactions for administrative review.
Demo
Design
The system is built on a minimalist architecture, utilizing FastAPI and SQLite to provide zero-configuration deployment on lightweight Linux VMs without the overhead of external databases.
Configuration
Add a [gemini] section with your API key and optional model (defaults to gemini-3.1-flash-lite-preview):
[gemini]
api_key = "mysecretkey"
model = "gemini-3.1-flash-lite-preview"
You can also include a [context] section to provide a default prompt for the agent:
[context]
prompt = "You are a helpful agent for Acme College."
To enable a secure administrative dashboard, add a [google] section with a client_id to use for authentication.
[google]
client_id = "your-google-client-id.apps.googleusercontent.com"
To restrict dashboard access to specific addresses, add a [roles] section with an admins list. When admins is non-empty, only addresses listed will be allowed access.
[roles]
admins = ["alice@example.com", "bob@example.com"]
Usage
- Set API keys, system prompt, and authorized users in
darkglass.toml - Run
uvx darkglassorpipx run darkglassto launch production server - Use the demo page to test the config: http://localhost:8000/static/demo.html
- Update reverse proxy configs as required to route requests to darkglass.
- Add the following snippet to your site, replacing the URL based on your chosen production endpoint:
<script src="https://darkglass.example.com/static/webchat.js"></script>
Demo Snippet
For quick demo purposes, the following snippet can be pasted into browser dev tools on any page to add a chat interface against a server running on localhost:
let darkglass = document.createElement('script')
darkglass.src = 'http://localhost:8000/static/webchat.js'
darkglass.defer = true
document.body.appendChild(darkglass)
Mock Data
For demonstration purposes, the interface will correctly respond to the following queries even with no LLM API keys configured:
- "What is 1+1?"
- "What is the capital of France?"
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 darkglass-1.4.0.tar.gz.
File metadata
- Download URL: darkglass-1.4.0.tar.gz
- Upload date:
- Size: 744.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a322174f56502f516460304e486e9bbc28b4b0801eb21d0d8123cf975d59e3a2
|
|
| MD5 |
a4e260edce711200e6e991861e49ff60
|
|
| BLAKE2b-256 |
f5304c597594035e8eb7df3bbdf1cf862c1ccf918f484cf0d017169df7d9d5f5
|
File details
Details for the file darkglass-1.4.0-py3-none-any.whl.
File metadata
- Download URL: darkglass-1.4.0-py3-none-any.whl
- Upload date:
- Size: 11.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ae87066f2e28045c70a9c25ec59e77cd8a089f30d2904b6ae46630e126695f6
|
|
| MD5 |
41a2ed00471efa7678d5c5291be320bc
|
|
| BLAKE2b-256 |
6ce816cdba6fe31e48ef1c986a95215286a44f721b7b053b64763b11aef9b55a
|