# Rony Chat Bot β€” HTTP Portfolio Bot > 🌐 **Language:** [English](./README.md) | [EspaΓ±ol](./README.es.md) > > πŸ€– **HTTP chatbot that presents your portfolio and answers questions about your projects.** **Rony Chat Bot** is a chatbot based on [`rony-llm-agent`](https://github.com/VictorVargas/rony-llm-agent) that integrates with an Astro/React site to answer questions about Victor Hugo Vargas and his projects, using **RAG over markdown files**. ## ✨ Features - 🌐 **HTTP server** with SSE (Server-Sent Events) streaming - 🧠 **RAG over markdown** β€” automatically indexes `.md` in `data/projects/` (SQLite FTS5, no embeddings) - 🎭 **Customizable persona** β€” responds as "Victor's assistant" - ⚑ **Self-hosted** with llama.cpp (default) or Ollama (no cloud API key required) - πŸ’¬ **Drop-in chat widget** β€” vanilla JS, no build step, works in any site - πŸ›‘οΈ **Rate limiting** and structured logging - πŸ“¦ **Portable** β€” adaptable to other contexts (clients, products, etc.) ## πŸš€ Quick start ```bash # 1. Install git clone https://github.com/VictorVargas/rony-chat-bot.git cd rony-chat-bot # 2. Resolve dependencies (creates go.sum with hashes) go mod tidy # 3. Configure provider (llama.cpp by default) # Download a GGUF model, e.g.: # https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct-GGUF export RONY_MODELS_PATH=/path/to/models # 4. Load your projects in data/projects/ echo "# My Cool Project\nDescription..." > data/projects/my-project.md # 5. Build go build -o bin/chat-bot ./cmd/chat-bot # 6. Run ./bin/chat-bot serve # β†’ Serves on http://localhost:7331 ``` ## πŸ“ Structure ``` rony-chat-bot/ β”œβ”€β”€ cmd/chat-bot/ # Entry point (CLI) β”œβ”€β”€ internal/ β”‚ β”œβ”€β”€ server/ # HTTP handlers + SSE β”‚ β”œβ”€β”€ agent/ # LLM client + RAG + persona runner β”‚ β”œβ”€β”€ portfolio/ # Data loader (markdown β†’ RAG) β”‚ β”œβ”€β”€ persona/ # Persona override β”‚ β”œβ”€β”€ streaming/ # SSE helpers β”‚ └── i18n/ # Language detection (EN/ES) β”œβ”€β”€ web/ # ← DROP-IN CHAT WIDGET β”‚ β”œβ”€β”€ chat-widget.js β”‚ β”œβ”€β”€ chat-widget.css β”‚ └── example.html β”œβ”€β”€ data/projects/ # ← YOUR PROJECTS IN MARKDOWN β”‚ β”œβ”€β”€ rony-harness.md β”‚ β”œβ”€β”€ rony-llm-agent.md β”‚ └── ... β”œβ”€β”€ configs/ β”‚ └── portfolio-bot.yaml # Provider + RAG + persona config β”œβ”€β”€ docs/ β”‚ └── architecture.md # ← Complete technical specification └── go.mod # require rony-llm-agent ``` ## 🎯 Embed in any site The bot ships with a drop-in chat widget. Add two files and a ` ``` See [`web/README.md`](./web/README.md) for the full configuration reference and Astro/Next.js integration snippets. Full architecture in [`docs/architecture.md`](./docs/architecture.md) Β§5. ## πŸ”„ Adapt to another client This bot is designed to be **atomic** and reusable. To adapt it (e.g., chatbot for a car dealership): 1. Fork/clone this repo 2. Replace `data/projects/` with `data/inventory/` (or another domain) 3. Update `configs/portfolio-bot.yaml` with the new persona 4. Deploy The `rony-llm-agent` library doesn't change. ## πŸ“š Documentation - [**Architecture doc**](./docs/architecture.md) β€” Complete technical specification - [Library: `rony-llm-agent`](https://github.com/VictorVargas/rony-llm-agent) β€” Reusable core - [Rony Harness](https://github.com/VictorVargas/rony-harness) β€” The other project using the same library ## πŸ“„ License MIT β€” see [`LICENSE`](./LICENSE). ## πŸ”— Workspace projects - [`rony-llm-agent`](https://github.com/VictorVargas/rony-llm-agent) β€” Core library - [`rony-harness`](https://github.com/VictorVargas/rony-harness) β€” AI agent harness (TUI) - [`portfolio`](https://github.com/VictorVargas/portfolio) β€” Astro + React site (integrates this bot)