CustomChat
A chat app over your documents, configured with one YAML file. Answers cite their sources. Includes offline Demo, saved chats, themes and a local configuration page.
Start on a fresh computer
Open Terminal on macOS/Linux, or PowerShell on Windows. Copy the command for your computer. You do not need to install Python, Git, uv or uvx first.
macOS / Linux (needs curl, included on macOS and many Linux systems):
curl -fsSL https://raw.githubusercontent.com/Harsh23Kashyap/customchat/main/start.sh | sh
Windows PowerShell:
& { $f = Join-Path ([IO.Path]::GetTempPath()) ([IO.Path]::GetRandomFileName() + '.ps1'); try { Invoke-WebRequest https://raw.githubusercontent.com/Harsh23Kashyap/customchat/main/start.ps1 -OutFile $f; & powershell -NoProfile -ExecutionPolicy Bypass -File $f } finally { Remove-Item $f -ErrorAction SilentlyContinue } }
These scripts detect uv or download it from its official installer, obtain Python 3.12 if needed, then run CustomChat with uv tool run (the same operation as uvx). No administrator access is needed. First setup needs internet and writable disk space. Review start.sh or start.ps1 before running downloaded software. Network restrictions or a locked-down work computer can still prevent setup; the terminal shows the error.
The app opens in your browser. If that does not happen, open the printed localhost URL. Starts with offline Demo: no API key, account, paid AI calls or cloud hosting. Press Ctrl+C to stop. Run the same command from the same folder to return to your chats. Your workspace is customchat-app in that folder, separate from the software environment. Existing app files are not overwritten.
Already have uv?
uvx --python 3.12 --from https://github.com/Harsh23Kashyap/customchat/archive/refs/heads/main.zip customchat start
This archive route needs no Git. It installs from current main, which can change. PyPI publication of customchat-app is pending; do not use uvx customchat or pip install customchat, which target another project.
Will it conflict with my other Python packages?
uvx runs CustomChat and its dependencies in a separate tool environment. It does not install packages into your system Python or another project's virtual environment. You do not need to create a venv for the commands above. The bootstrap also removes inherited PYTHONPATH/PYTHONHOME overrides for this run. Your documents and chats live outside uv's cache.
Isolation avoids shared dependency-version conflicts, not every possible computer problem. First install still needs internet; disk permissions, antivirus, proxies and platform support can affect setup. If the usual port is busy, CustomChat chooses another and prints its URL.
Prefer pip? Use a separate venv
With Python 3.10+ already installed, open a new empty folder and run:
# macOS / Linux
python3 -m venv .venv
.venv/bin/python -m pip install https://github.com/Harsh23Kashyap/customchat/archive/refs/heads/main.zip
.venv/bin/python -m customchat start
# Windows
py -3 -m venv .venv
.\.venv\Scripts\python.exe -m pip install https://github.com/Harsh23Kashyap/customchat/archive/refs/heads/main.zip
.\.venv\Scripts\python.exe -m customchat start
These commands use the venv directly; no activation or PowerShell activation-policy change is needed. Avoid global pip install for this app. To check dependencies, run the venv's Python with -m pip check. Use a new folder or a new venv name rather than overwriting an environment you already use.
Configure your own app
Choose an AI provider in Configuration or your app YAML. Keep keys in environment variables/private local storage, never YAML or Git.
uvx --python 3.12 --from https://github.com/Harsh23Kashyap/customchat/archive/refs/heads/main.zip customchat start --directory my-chat
Edit my-chat/app.yaml and add documents in the app folder. Configuration reference.
For a chat-only interface, append --lock-config or set CUSTOMCHAT_CONFIG=off. Configuration pages and settings/key/model endpoints then return 404. Remove the lock on restart to configure again.
More
- Install choices, clone installers and validation
- Hosting and deployment (no public deployment tested here)
- Architecture
- Tests:
python -m unittest discover -s tests
CustomChat is the conversation counterpart of Custom-Nerd. DietChat and WirelessChat are included example apps.
Authors and license
Harsh Kashyap, Shela Wu. Advisor: Dennis Shasha. MIT license. See LICENSE.
Metadata
Release files for customchat-app 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| customchat_app-0.1.0.tar.gz | 373.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| customchat_app-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 730.7 kB
Release files / customchat_app-0.1.0.tar.gz
| Download URL | customchat_app-0.1.0.tar.gz |
|---|---|
| Size | 373.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
18dacdce685f99521e9462f3791d807c82e35cce1668b9dfc00bb8d2cbb54e83
|
|
BLAKE2b-256 checksum How to use checksums |
1b3e8620f61636e27df6d4f1e56de69cfb2a96ef9ca36facff0687b718818c22
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.
Transparency logRelease files / customchat_app-0.1.0-py3-none-any.whl
| Download URL | customchat_app-0.1.0-py3-none-any.whl |
|---|---|
| Size | 356.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
54bfb12db82abafcd5880099c251036e444a961eba6ea86ade12daa94c6b3340
|
|
BLAKE2b-256 checksum How to use checksums |
6621f11e6ee16837dbbc9942d89d5088da5651648f8be9d68da5f2d7419119ce
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.
Transparency log