Looking for technical documentation? See the project wiki in-code at /documentation – it contains backend/frontend architecture diagrams, DevOps guides, API reference, and ADRs.
DeepScribe is a configurable AI document writing system developed by Aulendur LLC. It enables users to create templates for documents that will be written by Large Language Models (LLMs), with fine-grained control over formatting, content requirements, and generation parameters.
This system is built on the principle of Retrieval-Augmented Generation (RAG). It allows users to ground the AI's output in their own data by managing a knowledge hub of uploaded files and crawled web content, ensuring the generated documents are accurate, context-aware, and tailored to specific needs.
- Template-Driven Architecture: Visually construct document templates with a drag-and-drop interface. Define sections, configure formatting, and provide specific instructions for the AI on a per-section basis.
- Knowledge Source Management:
- File Processing: Upload and extract text from PDF, DOCX, and plain text files.
- Vectorstores: Create curated knowledge bases from your files and web crawls for the AI to use as context.
- Web Crawler: Ingest content directly from websites to build comprehensive knowledge sources.
- Hybrid Database System: Utilizes PostgreSQL with
pgvectorfor structured data and semantic search, MongoDB for unstructured content like crawled pages and chat logs, and Redis for job queuing and caching. - Multi-Provider LLM Integration: Supports both commercial (OpenAI, Anthropic) and local (Ollama, LM Studio, vLLM) language models, with separate configurations for content generation and embedding.
- AI-Powered Research: Augments document generation with live web search capabilities to incorporate the most current information.
- Interactive AI Assistant: Features "The Scribe", a built-in chat assistant that can answer questions about DeepScribe's functionality or query your own vectorstores.
The easiest way to get the DeepScribe development environment running is with Docker and Docker Compose. This setup includes all necessary databases, services, and provides hot-reloading for both the frontend and backend.
- Docker and Docker Compose
- Git
- An editor for
.envfiles
git clone https://github.com/AulendurForge/DeepScribe.git
cd deepscribeDeepScribe requires two environment files for local development.
First, create the root .env file for Docker Compose: This file passes API keys into the build environment of the backend service.
cp example.env .envSecond, create the backend .env file: This file is used by the backend service at runtime.
cp backend/example.env backend/.envNow, open both .env files and fill in the required values. At a minimum, you should provide a JWT_SECRET and an ENCRYPTION_KEY. For full functionality, add your API keys.
| Variable | Description | File(s) |
|---|---|---|
POSTGRES_PASSWORD |
Password for the PostgreSQL database. The default postgres_password in the docker-compose.yml is recommended for local dev. |
backend/.env |
JWT_SECRET |
A long, random string used to sign JSON Web Tokens for authentication. Required for login. | backend/.env |
ENCRYPTION_KEY |
A 32-character key for encrypting user-provided API keys in the database. Required for saving LLM settings. | backend/.env |
OPENAI_API_KEY |
Your API key for OpenAI models. | .env, backend/.env |
ANTHROPIC_API_KEY |
Your API key for Anthropic models. | .env, backend/.env |
SERPER_API_KEY |
Your API key from serper.dev for the web research feature. A free tier is available. | .env, backend/.env |
Note: You only need to provide keys for the services you intend to use.
docker-compose up -d --buildThis command builds the images for all services and starts them in detached mode. The initial build may take several minutes.
Once the containers are running, you can access the various parts of the application:
| Service | URL | Credentials (if applicable) |
|---|---|---|
| DeepScribe App | http://localhost:3000 | (Create an account) |
| Backend API | http://localhost:5000/api/health | - |
| pgAdmin (Postgres GUI) | http://localhost:5050 | admin@admin.com / admin |
| Mongo Express (Mongo GUI) | http://localhost:8081 | admin / admin |
| RedisInsight (Redis GUI) | http://localhost:5540 | - |
| MinIO (S3 Storage) | http://localhost:9001 | minioadmin / minioadmin |
| Prometheus (Metrics) | http://localhost:9090 | - |
| Grafana (Dashboards) | http://localhost:3001 | admin / admin |
To stop all running services, use:
docker-compose downTo stop and remove the data volumes (deleting all data), use:
docker-compose down -vWhen running local providers like Ollama or LM Studio, you might encounter a "Connection refused" error. This is typically because the local server is only listening for requests from localhost (127.0.0.1) and cannot accept connections from inside a Docker container.
Solution: Restart your local LLM server and configure it to listen on all network interfaces (0.0.0.0).
- For Ollama (Command Line):
- First, stop any running Ollama process.
- Then, restart the server from your terminal using:
OLLAMA_HOST=0.0.0.0 ollama serve
- For LM Studio:
- Go to the Server tab (
<-->). - In the "Server Settings," change the "Host" to
0.0.0.0. - Restart the LM Studio server.
- Go to the Server tab (
For more detailed technical documentation, including architecture diagrams, API references, and design decisions, please see the in-code project wiki at /documentation/README.md.
This software is proprietary and confidential. Unauthorized copying, distribution, or use is strictly prohibited.
© 2025 Aulendur LLC. All rights reserved.

