Rename: jarvisChat → cAIc (product name)
- jarvisChat/JarvisChat/jarvischat → cAIc/cAIc/caic (branded/lower) - JARVISCHAT_ env vars → CAIC_ - jc- script/config prefix → caic- - jarvis_rag → caic_rag - jarvischat.db / volumes → caic.db / caic_* - AMQP vhost/user jarvischat → caic - Syslog, loggers, docstrings all updated - 47 files, zero stale references, 148 tests pass
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
# jarvisChat v0.14.0
|
||||
# cAIc v0.14.0
|
||||
|
||||
You have a garage full of retired office PCs, a GPU that was mid-range when Obama was president, and a burning desire to chat with a language model without renting some billionaire's server farm. Congratulations — you've found your people.
|
||||
|
||||
jarvisChat is a chat UI that grew limbs. It started as a single-file Python script because OpenWebUI wouldn't install on Debian 13, and somewhere along the way it learned to file paperwork (file attachments), write things down (RAG ingest), boss around other computers (AMQP clustering), and check its own pulse (hardware self-assessment). It now does all the things you didn't ask for, plus a few you might actually use.
|
||||
cAIc is a chat UI that grew limbs. It started as a single-file Python script because OpenWebUI wouldn't install on Debian 13, and somewhere along the way it learned to file paperwork (file attachments), write things down (RAG ingest), boss around other computers (AMQP clustering), and check its own pulse (hardware self-assessment). It now does all the things you didn't ask for, plus a few you might actually use.
|
||||
|
||||
Under the hood: FastAPI + SQLite + Jinja2 on Python 3.13. Distributes inference across mismatched hardware via llama.cpp RPC.
|
||||
|
||||
@@ -38,7 +38,7 @@ Developer wiki: [docs/wiki/Home.md](docs/wiki/Home.md)
|
||||
### Terminal RAG Hook — `POST /api/ingest` (v0.11.0)
|
||||
- Bearer token auth (same key as `/v1/chat/completions`)
|
||||
- Chunking via shared `chunk_text()` helper, embed via Ollama, upsert to Qdrant
|
||||
- `jc-ingest.sh` — PROMPT_COMMAND shell script for autonomous terminal history ingestion
|
||||
- `caic-ingest.sh` — PROMPT_COMMAND shell script for autonomous terminal history ingestion
|
||||
|
||||
### v1.8.0 Foundation (refactor & fixes)
|
||||
- **Modular refactor** — single-file `app.py` split into `config.py`, `db.py`, `auth.py`, `security.py`, `memory.py`, `search.py`, `rag.py`, `gpu.py`, and `routers/` package
|
||||
@@ -64,7 +64,7 @@ Developer wiki: [docs/wiki/Home.md](docs/wiki/Home.md)
|
||||
## File Structure
|
||||
|
||||
```
|
||||
/opt/jarvischat/
|
||||
/opt/caic/
|
||||
├── amqp.py # aio-pika AMQP connection manager + subscribe/rebind
|
||||
├── app.py # FastAPI app entry point
|
||||
├── cluster.py # Cluster protocol: node registry, event log, ping/pong
|
||||
@@ -112,45 +112,45 @@ Developer wiki: [docs/wiki/Home.md](docs/wiki/Home.md)
|
||||
|
||||
```bash
|
||||
# Create directory and venv
|
||||
sudo mkdir -p /opt/jarvischat
|
||||
sudo chown $USER:$USER /opt/jarvischat
|
||||
cd /opt/jarvischat
|
||||
sudo mkdir -p /opt/caic
|
||||
sudo chown $USER:$USER /opt/caic
|
||||
cd /opt/caic
|
||||
python3 -m venv venv
|
||||
|
||||
# Install dependencies
|
||||
pip install fastapi uvicorn httpx psutil jinja2 python-multipart pypdf aio-pika
|
||||
|
||||
# Set admin PIN before first startup (4 digits)
|
||||
export JARVISCHAT_ADMIN_PIN=4827
|
||||
export CAIC_ADMIN_PIN=4827
|
||||
|
||||
# Create subdirectories
|
||||
mkdir -p templates static
|
||||
|
||||
# Copy files
|
||||
# (copy all .py files to /opt/jarvischat/)
|
||||
# (copy routers/ directory to /opt/jarvischat/)
|
||||
# (copy templates/index.html to /opt/jarvischat/templates/)
|
||||
# (copy all .py files to /opt/caic/)
|
||||
# (copy routers/ directory to /opt/caic/)
|
||||
# (copy templates/index.html to /opt/caic/templates/)
|
||||
```
|
||||
|
||||
WARNING: Do not use `1234` as your admin PIN unless you accept weak local security.
|
||||
|
||||
NOTE: First boot requires `JARVISCHAT_ADMIN_PIN` unless you explicitly opt into insecure fallback with `JARVISCHAT_ALLOW_DEFAULT_PIN=true`.
|
||||
NOTE: First boot requires `CAIC_ADMIN_PIN` unless you explicitly opt into insecure fallback with `CAIC_ALLOW_DEFAULT_PIN=true`.
|
||||
|
||||
## Systemd Service
|
||||
|
||||
Create `/etc/systemd/system/jarvischat.service`:
|
||||
Create `/etc/systemd/system/caic.service`:
|
||||
|
||||
```ini
|
||||
[Unit]
|
||||
Description=jarvisChat - Local Inference Web Interface
|
||||
Description=cAIc - Local Inference Web Interface
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=jarvischat
|
||||
Group=jarvischat
|
||||
WorkingDirectory=/opt/jarvischat
|
||||
ExecStart=/opt/jarvischat/venv/bin/uvicorn app:app --host 0.0.0.0 --port 8080
|
||||
User=caic
|
||||
Group=caic
|
||||
WorkingDirectory=/opt/caic
|
||||
ExecStart=/opt/caic/venv/bin/uvicorn app:app --host 0.0.0.0 --port 8080
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
|
||||
@@ -160,8 +160,8 @@ WantedBy=multi-user.target
|
||||
|
||||
```bash
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable jarvischat
|
||||
sudo systemctl start jarvischat
|
||||
sudo systemctl enable caic
|
||||
sudo systemctl start caic
|
||||
```
|
||||
|
||||
## Memory Commands
|
||||
@@ -171,7 +171,7 @@ In chat, natural language triggers memory operations:
|
||||
| You say | What happens |
|
||||
|---------|--------------|
|
||||
| "remember that I prefer Rust over Go" | Stores as `preference` |
|
||||
| "remember that JarvisChat runs on port 8080" | Stores as `infrastructure` |
|
||||
| "remember that cAIc runs on port 8080" | Stores as `infrastructure` |
|
||||
| "note that the deadline is Friday" | Stores as `general` |
|
||||
| "forget about the deadline" | Removes matching memories |
|
||||
|
||||
@@ -317,4 +317,4 @@ MIT
|
||||
|
||||
## Repository
|
||||
|
||||
Gitea: `ssh://gitea@llgit.llamachile.tube:1319/gramps/jarvisChat.git`
|
||||
Gitea: `ssh://gitea@llgit.llamachile.tube:1319/gramps/caic.git`
|
||||
|
||||
Reference in New Issue
Block a user