An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

README

          




Sourciva


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!


Python
SvelteKit
FastAPI
Tailwind
Docker


---

## 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).