Run the open-source edition on your own infrastructure or use Ponup Cloud for a managed service.
Ponup stores authored and uploaded content in Spaces, makes it searchable, and serves it to people and agents through a web app, REST, GraphQL, MCP, and public links.
Comprehensive documentation, tutorials, and configuration guides are available at https://docs.ponup.com.
docker compose up --buildOpen http://localhost:3000. API documentation is available at http://localhost:8000/docs, GraphQL at http://localhost:8000/graphql, and Streamable HTTP MCP at http://localhost:8000/mcp.
Copy .env.example to .env only when you want to override the Compose
defaults. The first startup downloads the local embedding model. Set
EMBEDDING_PROVIDER=openai-compatible and the corresponding variables in
.env to use a compatible hosted endpoint instead.
The New Content modal can draft Markdown or JSON from its title, description,
and tags. Configure any OpenAI-compatible chat-completions provider on the
server; credentials never reach the browser. For example, use Ollama with
LLM_BASE_URL=http://host.docker.internal:11434/v1 and
LLM_MODEL=llama3.2, or set LLM_BASE_URL, LLM_API_KEY, and LLM_MODEL
for OpenAI, OpenRouter, or another compatible provider. When running the API
outside Docker, an Ollama URL is usually http://localhost:11434/v1.
On Linux Docker hosts, Ponup's Compose configuration maps
host.docker.internal to the host gateway automatically.
The backend uses Python 3.12, FastAPI, SQLAlchemy, PostgreSQL/pgvector, Celery,
and uv. The frontend uses React, TypeScript, Vite, and pnpm.
make dev # start the Docker Compose stack (imports the Keycloak Ponup realm)
make test # backend and frontend tests in containers
make migrate # apply database migrations
make seed # create a demo Space and ContentAdministrative routes (/api, /graphql) require Keycloak SSO login. Do not expose them, database ports, or Keycloak (8080) to an untrusted network. Only /p and /public are designed as public surfaces.
Markdown, plain text, JSON, and PDF sources are extracted, chunked, embedded,
and stored in PostgreSQL. Processing is asynchronous and reported as queued,
processing, ready, or failed.
If you find Ponup useful, please consider giving it a star on GitHub ⭐. Starring helps support the project and ensures you receive notifications about new releases and updates!
Ponup is open-source software licensed under the MIT License.
