Skip to main content
Welcome to the Khoj contributor community! We’re excited to have you here. Open source contributors are a cornerstone of the Khoj community, and we welcome all contributions, big or small.

Why Contribute?

Make an Impact

Help build, test, and improve a tool used by thousands to boost productivity and extend their capabilities with AI.

Learn & Grow

Work on cutting-edge AI, LLMs, semantic search, and modern web technologies while collaborating with experienced developers.

Join the Community

Connect with developers, designers, and AI enthusiasts who share your passion for building better tools.

Shape the Future

Influence the direction of an open-source personal AI platform that’s always evolving.

Getting Started

1

Join the Discord Community

Join our Discord server and click the ✅ for the question “Are you interested in becoming a contributor?” in the #welcome-and-rules channel. This gives you access to the #contributors channel where you can ask questions and get help.
2

Read the Contributing Guide

Familiarize yourself with the official GitHub docs on contributing to an open-source project.
3

Find Your First Issue

Browse GitHub Issues with the good first issue tag to find beginner-friendly tasks. These are carefully selected to help new contributors get started.
4

Set Up Your Development Environment

Follow our Development Setup Guide to get Khoj running locally on your machine.

Ways to Contribute

Code Contributions

  • New Features: Implement new capabilities and extend Khoj’s functionality
  • Bug Fixes: Identify and fix issues in the codebase
  • Performance Improvements: Optimize existing code for better speed and efficiency
  • Refactoring: Improve code quality, readability, and maintainability
  • Testing: Add unit tests, integration tests, and improve test coverage

Non-Code Contributions

  • Documentation: Improve guides, fix typos, add examples, or create tutorials
  • Design: Contribute UI/UX improvements, icons, or visual assets
  • Bug Reports: Report issues with detailed reproduction steps
  • Feature Requests: Propose new features and improvements
  • Community Support: Help other users in Discord, GitHub discussions, or forums
  • Translations: Help make Khoj accessible in more languages

Technology Stack

Backend

  • Python 3.10-3.12: Core application logic
  • FastAPI: Modern web framework
  • Django: Database ORM and admin interface
  • PostgreSQL + pgvector: Database with vector embeddings
  • PyTorch: Machine learning framework
  • Sentence Transformers: Text embeddings

Frontend

  • Next.js 14: React framework with SSR
  • TypeScript: Type-safe JavaScript
  • Tailwind CSS: Utility-first styling
  • Radix UI: Accessible component primitives
  • Bun: Fast JavaScript runtime and package manager

Clients

  • Obsidian Plugin: TypeScript/JavaScript
  • Emacs Package: Emacs Lisp
  • Desktop App: Electron (TypeScript)
  • Android App: Kotlin

Infrastructure

  • Docker: Containerization
  • GitHub Actions: CI/CD pipelines
  • pytest: Testing framework
  • pre-commit: Code quality hooks

Contribution Workflow

1

Discuss First

Before starting work on a significant change, create or comment on a GitHub issue to discuss your approach. Tag a maintainer to get feedback. This helps ensure your PR aligns with project goals and gets merged faster.
2

Fork and Branch

Fork the repository and create a feature branch from master. Use descriptive branch names like feature/add-search-filters or fix/memory-leak.
3

Make Changes

Write clean, well-documented code following the project’s style guidelines. Add tests for new functionality.
4

Test Locally

Run the test suite and linter to ensure your changes don’t break existing functionality:
pytest              # Run tests
mypy                # Type checking
pre-commit run --all  # Format and lint
5

Create Pull Request

Submit a PR with a clear title and description. Link to the related issue and explain what your changes do and why.
6

Address Review Feedback

Maintainers will review your PR and may request changes. Be responsive to feedback and make necessary updates.

Code of Conduct

We’re committed to providing a welcoming and inclusive environment. Be respectful, constructive, and collaborative. Harassment, discrimination, or any form of negative behavior won’t be tolerated.

Community Guidelines

  • Be Respectful: Treat others with kindness and empathy
  • Be Constructive: Provide helpful feedback and suggestions
  • Be Patient: Remember that everyone is learning and growing
  • Be Collaborative: Work together to solve problems
  • Be Open-Minded: Consider different perspectives and approaches

Maintainer Response Times

  • Critical bugs: Within 24-48 hours
  • Feature requests: Within 1 week
  • Pull request reviews: Within 1-2 weeks
  • Community questions: Within 2-3 days
Response times may vary based on maintainer availability and project workload. We appreciate your patience!

Recognition

All contributors are recognized in our:

Ready to Contribute?

Head over to the Development Setup Guide to get started with setting up your local environment!

Additional Resources

Development Setup

Complete guide to setting up Khoj locally

Architecture

Understand Khoj’s system design and structure

Performance

Learn about optimization and benchmarking

GitHub Issues

Find issues to work on

Build docs developers (and LLMs) love