Skip to main content

Chat AI lokal via WiFi dengan file manager

Project description

ChatLol

Multi-provider AI chat app you can run locally and access from any device on your WiFi. One command, zero config — bring your own API keys or use CLI-based providers with no key at all.

Python 3.11+ License MIT PyPI

Features

  • 10 AI providers — Ollama, Claude, OpenAI, Gemini, DeepSeek, OpenRouter, 9Router, Claude CLI, Antigravity (agy), Kiro
  • No-key providers — Claude CLI and Antigravity use your local CLI login, no API key needed
  • File uploads — Attach text, code, PDF, or images; content is sent to the model as context
  • Markdown rendering — Assistant replies render headings, lists, code blocks with copy button, links, and more
  • Chat history — Per-user sessions with auto-titles, stored in local SQLite
  • File Manager — Browse, upload, create folders, drag & drop — all from the browser
  • Settings UI — Manage API keys, port, and Ollama URL from a web page (localhost-only)
  • Dark / light mode — Warm Claude-inspired design with one-click theme toggle
  • WiFi access — Accessible from phones, tablets, or any device on the same network
  • Pip installablepip install chatlol and run from anywhere

Quick Start

pip install chatlol
chatlol

Open http://localhost:8000 in your browser. That's it.

Custom port:

chatlol 9000

Providers

Provider Key Required Notes
Ollama No Local models (llama3, mistral, etc.)
Claude (API) Yes ANTHROPIC_API_KEY
OpenAI Yes OPENAI_API_KEY
Gemini Yes GEMINI_API_KEY
DeepSeek Yes DEEPSEEK_API_KEY
OpenRouter Yes OPENROUTER_API_KEY — access 300+ models
9Router Optional Local gateway at localhost:20128npm i -g 9router
Claude CLI No Uses claude CLI login (Claude Code)
Antigravity No Uses agy CLI login — auto-detects models
Kiro Coming soon

Configuration

Set API keys via:

  • Settings pagehttp://localhost:8000/settings (localhost only)
  • Environment variables or .env file
  • ~/.chatlol/settings.json (auto-created)
ANTHROPIC_API_KEY=sk-ant-...
OPENAI_API_KEY=sk-...
GEMINI_API_KEY=AI...
DEEPSEEK_API_KEY=sk-...
OPENROUTER_API_KEY=sk-or-...
NINEROUTER_API_KEY=...
OLLAMA_URL=http://localhost:11434
PORT=8000

Development

git clone https://github.com/300squarefeet/ChatLol.git
cd ChatLol
pip install -e ".[dev]"
pytest

Run the dev server:

python -m chatlol 8000

Project Structure

chatlol/
├── main.py            # FastAPI app, websocket chat, file manager routes
├── config.py          # Settings persistence & reload
├── database.py        # SQLite chat history
├── file_processor.py  # Upload handling (text/PDF/image)
├── providers/         # AI provider implementations
│   ├── ollama.py
│   ├── claude.py
│   ├── openai.py
│   ├── gemini.py
│   ├── deepseek.py
│   ├── openrouter.py
│   ├── ninerouter.py
│   ├── claude_cli.py
│   ├── antigravity.py
│   └── kiro.py
└── static/            # Frontend (vanilla HTML/CSS/JS)

Security

  • Settings API is localhost-only (403 from remote)
  • API keys are never sent to the browser — only masked placeholders
  • CLI providers run in sandbox mode with no tool execution
  • File content from uploads is treated as untrusted data
  • No shell execution — all subprocesses use exec with argument lists

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

chatlol-0.1.1.tar.gz (50.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

chatlol-0.1.1-py3-none-any.whl (63.4 kB view details)

Uploaded Python 3

File details

Details for the file chatlol-0.1.1.tar.gz.

File metadata

  • Download URL: chatlol-0.1.1.tar.gz
  • Upload date:
  • Size: 50.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for chatlol-0.1.1.tar.gz
Algorithm Hash digest
SHA256 dd3ad33f7bdffe36203a17eb9ad40d4e61b27fb0361bf3e126978ab0062499c8
MD5 6d3641dceb8368e1dbd1944ddf462854
BLAKE2b-256 0de8a0ca884471c1ade12c0e369c5f41eec2f17d8b72bedc6dbb18640f51f39e

See more details on using hashes here.

Provenance

The following attestation bundles were made for chatlol-0.1.1.tar.gz:

Publisher: publish.yml on 300squarefeet/ChatLol

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file chatlol-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: chatlol-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 63.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for chatlol-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 20b3327ea0fc8456b45b6172ebefe2855b27730a5c378386c19e70d26ba0421f
MD5 225bbd1a9e641f624a6d4999490e5230
BLAKE2b-256 ea9ef74084b9fca88ef82e2cf460a9eea0cfd55f69282f7ac260e6a0e59f6a86

See more details on using hashes here.

Provenance

The following attestation bundles were made for chatlol-0.1.1-py3-none-any.whl:

Publisher: publish.yml on 300squarefeet/ChatLol

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page