https://github.com/mikolajbadyl/sourciva
AI-powered deep research and content creation agent with streaming web UI
https://github.com/mikolajbadyl/sourciva
agent ai deep-research docker fastapi llm research searxng sveltekit
Last synced: about 2 months ago
JSON representation
AI-powered deep research and content creation agent with streaming web UI
- Host: GitHub
- URL: https://github.com/mikolajbadyl/sourciva
- Owner: mikolajbadyl
- License: mit
- Created: 2026-05-02T18:17:15.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2026-05-03T17:52:05.000Z (about 2 months ago)
- Last Synced: 2026-05-03T18:25:45.330Z (about 2 months ago)
- Topics: agent, ai, deep-research, docker, fastapi, llm, research, searxng, sveltekit
- Language: Python
- Size: 621 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
README
Turn deep research into real output.
Self-hosted AI research agent.
Autonomous deep research, web search, document generation - all in your browser, on your machine.
⭐ If you find Sourciva useful, consider giving it a star!
---
## What is Sourciva?
Sourciva is a self-hosted AI agent built for **deep research and content creation**. Give it a topic and it will autonomously search the web, read sources, synthesize findings, and produce polished documents - reports, articles, pages - all on its own. Watch it reason, search, read, iterate, and write in real time.
No cloud dependencies. No vendor lock-in. Your code, your keys, your machine.
## Features
- 🌊 **Real-time streaming** - watch the AI think, reason, and respond via SSE
- 🛠 **15+ built-in tools** - file I/O, shell commands, code search, web search, task management, and more
- 🤖 **Any LLM provider** - OpenAI, Anthropic, Gemini, DeepSeek, Groq, Mistral, Ollama, and [dozens more](#supported-providers)
- 🔌 **MCP support** - connect external tool servers via Model Context Protocol
- 📋 **Skill system** - extensible markdown-based skills for coding, design, research, and management
- 💬 **Workspace management** - persistent conversations with full history
- 🔍 **Web search** - built-in SearXNG integration for private, self-hosted search
- 📄 **Artifact panel** - the agent can create, manage, and surface files for you
- 🚀 **One-command deploy** - single Docker image, Docker Compose / Podman Compose
## Quick Start
### Prerequisites
- [Docker](https://docs.docker.com/get-docker/) (or [Podman](https://podman.io/)) with Docker/Podman Compose
- At least one LLM API key
### Setup
```bash
git clone https://github.com/mikolajbadyl/sourciva.git
cd sourciva
cp .env.example .env
```
Edit `.env` and add your API key(s). A single key is enough to get started:
```env
OPENAI_API_KEY=sk-...
```
Then launch:
```bash
docker compose up -d
```
Open **http://localhost:3000** - you're ready to go.
## Supported Providers
Sourciva uses [litellm](https://docs.litellm.ai/docs/providers) under the hood, so it works with **100+ LLM providers** out of the box. Set the corresponding environment variable for whichever provider(s) you want to use:
```env
# Examples - pick one or more
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
DEEPSEEK_API_KEY=...
GROQ_API_KEY=...
GEMINI_API_KEY=...
OLLAMA_API_BASE=http://localhost:11434 # local models
```
See the full list of supported providers and their env vars at [docs.litellm.ai/docs/providers](https://docs.litellm.ai/docs/providers).
You can set **multiple keys** at once - Sourciva will discover all available models and let you switch between them in the UI.
## Configuration
All configuration is done through the `.env` file:
```env
# LLM providers - set one or more
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
DEEPSEEK_API_KEY=...
# Internal (Docker handles these by default)
# SEARXNG_URL=http://searxng:8080
```
MCP servers are configured in `config/mcp.json`.
## Development
```bash
# Start dev environment
docker compose -f docker-compose.dev.yml up -d
# http://localhost:3000
```
### Lint & test
```bash
uv run ruff check backend/ # Python lint
uv run ruff format backend/ # Python format
bun run lint:fix # TS/Svelte lint + fix
bun run format # TS/Svelte format
uv run pytest # Python tests
bun run test # Frontend tests
```
## License
MIT License - see [LICENSE](LICENSE).