[[https://github.com/khoj-ai/khoj/edit/master/src/interface/emacs/README.org][file:/src/khoj/interface/web/assets/icons/khoj-logo-sideways-200.png]] Emacs


  [[https://stable.melpa.org/#/khoj][file:https://stable.melpa.org/packages/khoj-badge.svg]] [[https://melpa.org/#/khoj][file:https://melpa.org/packages/khoj-badge.svg]] [[https://github.com/khoj-ai/khoj/actions/workflows/build_khoj_el.yml][https://github.com/khoj-ai/khoj/actions/workflows/build_khoj_el.yml/badge.svg?]]  [[https://github.com/khoj-ai/khoj/actions/workflows/test_khoj_el.yml][https://github.com/khoj-ai/khoj/actions/workflows/test_khoj_el.yml/badge.svg?]]

  /An AI personal assistant for your digital brain/

** Table of Contents
  - [[https://github.com/khoj-ai/khoj/tree/master/src/interface/emacs#features][Features]]
  - [[https://github.com/khoj-ai/khoj/tree/master/src/interface/emacs#Interface][Interface]]
  - [[https://github.com/khoj-ai/khoj/tree/master/src/interface/emacs#Setup][Setup]]
    - [[https://github.com/khoj-ai/khoj/tree/master/src/interface/emacs#Direct-Install][Direct Install]]
    - [[https://github.com/khoj-ai/khoj/tree/master/src/interface/emacs#Minimal-Install][Minimal Install]]
    - [[https://github.com/khoj-ai/khoj/tree/master/src/interface/emacs#Standard-Install][Standard Install]]
    - [[https://github.com/khoj-ai/khoj/tree/master/src/interface/emacs#With-Straight.el][With Straight.el]]
  - [[https://github.com/khoj-ai/khoj/tree/master/src/interface/emacs#Use][Use]]
    - [[https://github.com/khoj-ai/khoj/tree/master/src/interface/emacs#Search][Search]]
    - [[https://github.com/khoj-ai/khoj/tree/master/src/interface/emacs#Chat][Chat]]
    - [[https://github.com/khoj-ai/khoj/tree/master/src/interface/emacs#Find-similar-entries][Find Similar Entries]]
    - [[https://github.com/khoj-ai/khoj/tree/master/src/interface/emacs#Advanced-usage][Advanced Usage]]
    - [[https://github.com/khoj-ai/khoj/tree/master/src/interface/emacs#Khoj-menu][Khoj Menu]]
  - [[https://github.com/khoj-ai/khoj/tree/master/src/interface/emacs#Upgrade][Upgrade]]
    - [[https://github.com/khoj-ai/khoj/tree/master/src/interface/emacs#Upgrade-Khoj-Backend][Upgrade Backend]]
    - [[https://github.com/khoj-ai/khoj/tree/master/src/interface/emacs#Upgrade-Khojel][Upgrade Khoj.el]]

** Features
  - *Search*
    - *Natural*: Advanced natural language understanding using Transformer based ML Models
    - *Local*: Your personal data stays local. All search, indexing is done on your machine*
    - *Incremental*: Incremental search for a fast, search-as-you-type experience
  - *Chat*
    - *Faster answers*: Find answers faster than search
    - *Iterative discovery*: Iteratively explore and (re-)discover your notes
    - *Assisted creativity*: Smoothly weave across answer retrieval and content generation

** Interface
*** Search UI
  [[/docs/khoj_on_emacs.png]]

*** Chat UI
  [[/docs/khoj_chat_on_emacs_0.5.0.png]]

** Setup
- /Make sure [[https://realpython.com/installing-python/][python]] (version 3.10 or lower) and [[https://pip.pypa.io/en/stable/installation/][pip]] are installed on your machine/

- /khoj.el attempts to automatically install, start and configure the khoj server./
  If this fails, follow [[https://github.com/khoj-ai/khoj/tree/master/#Setup][these instructions]] to manually setup the khoj server.

*** Direct Install
    #+begin_src elisp
    M-x package-install khoj
    #+end_src

*** Minimal Install
    Add below snippet to your Emacs config file.
    Indexes your org-agenda files, by default.

    #+begin_src elisp
      ;; Install Khoj Package from MELPA Stable
      (use-package khoj
        :ensure t
        :pin melpa-stable
        :bind ("C-c s" . 'khoj)
    #+end_src

  - Note: Install ~khoj.el~ from MELPA (instead of MELPA Stable) if you installed the pre-release version of khoj
    - That is, use ~:pin melpa~ to install khoj.el in above snippet if khoj server was installed with ~--pre~ flag, i.e ~pip install --pre khoj-assistant~
    - Else use ~:pin melpa-stable~ to install khoj.el in above snippet if khoj was installed with ~pip install khoj-assistant~
    - This ensures both khoj.el and khoj app are from the same version (git tagged or latest)

*** Standard Install
    Add below snippet to your Emacs config file.
    Indexes the specified org files, directories. Sets up OpenAI API key for Khoj Chat

    #+begin_src elisp
      ;; Install Khoj Package from MELPA Stable
      (use-package khoj
        :ensure t
        :pin melpa-stable
        :bind ("C-c s" . 'khoj)
        :config (setq khoj-org-directories '("~/docs/org-roam" "~/docs/notes")
                      khoj-org-files '("~/docs/todo.org" "~/docs/work.org")
                      khoj-openai-api-key "YOUR_OPENAI_API_KEY")) ; required to enable chat
    #+end_src

*** With [[https://github.com/raxod502/straight.el][Straight.el]]
  Add below snippet to your Emacs config file.
  Indexes the specified org files, directories. Sets up OpenAI API key for Khoj Chat

  #+begin_src elisp
    ;; Install Khoj Package using Straight.el
    (use-package khoj
      :after org
      :straight (khoj :type git :host github :repo "khoj-ai/khoj" :files (:defaults "src/interface/emacs/khoj.el"))
      :bind ("C-c s" . 'khoj)
      :config (setq khoj-org-directories '("~/docs/org-roam" "~/docs/notes")
                    khoj-org-files '("~/docs/todo.org" "~/docs/work.org")
                    khoj-openai-api-key "YOUR_OPENAI_API_KEY" ; required to enable chat)
  #+end_src

** Use
*** Search
  1. Hit ~C-c s s~ (or ~M-x khoj RET s~) to open khoj search

  2. Enter your query in natural language

    e.g "What is the meaning of life?", "My life goals for 2023"

*** Chat
  1. Hit ~C-c s c~ (or ~M-x khoj RET c~) to open khoj chat

  2. Ask questions in a natural, conversational style

     E.g "When did I file my taxes last year?"

  See [[https://github.com/khoj-ai/khoj/tree/master/#Khoj-Chat][Khoj Chat]] for more details

*** Find Similar Entries
  This feature finds entries similar to the one you are currently on.
  1. Move cursor to the org-mode entry, markdown section or text paragraph you want to find similar entries for
  2. Hit ~C-c s f~ (or ~M-x khoj RET f~) to find similar entries

*** Advanced Usage
  - Add [[https://github.com/khoj-ai/khoj/#query-filters][query filters]] during search to narrow down results further

    e.g `What is the meaning of life? -"god" +"none" dt>"last week"`

  - Use ~C-c C-o 2~ to open the current result at cursor in its source org file

    - This calls ~M-x org-open-at-point~ on the current entry and opens the second link in the entry.
    - The second link is the entries [[https://orgmode.org/manual/Handling-Links.html#FOOT28][org-id]], if set, or the heading text.
      The first link is the line number of the entry in the source file. This link is less robust to file changes.
    - Note: If you have [[https://orgmode.org/manual/Speed-Keys.html][speed keys]] enabled, ~o 2~ will also work

*** Khoj Menu
  [[/docs/khoj_emacs_menu.png]]
  Hit ~C-c s~ (or ~M-x khoj~) to open the khoj menu above. Then:
  - Hit ~t~ until you preferred content type is selected in the khoj menu

    ~Content Type~ specifies the content to perform ~Search~, ~Update~ or ~Find Similar~ actions on
  - Hit ~n~ twice and then enter number of results you want to see

    ~Results Count~ is used by the ~Search~ and ~Find Similar~ actions
  - Hit ~-f u~ to ~force~ update the khoj content index

    The ~Force Update~ switch is only used by the ~Update~ action

** Upgrade
*** Upgrade Khoj Backend
  #+begin_src shell
    pip install --upgrade khoj-assistant
  #+end_src

*** Upgrade Khoj.el
  Use your Emacs package manager to upgrade ~khoj.el~

  - For ~khoj.el~ from MELPA
    - Method 1
      - Run ~M-x package-list-packages~ to list all packages
      - Press ~U~ on ~khoj~ to mark it for upgrade
      - Press ~x~ to execute the marked actions
    - Method 2
      - Run ~M-x package-refresh-content~
      - Run ~M-x package-reinstall khoj~

  - For ~khoj.el~ from Straight
    - Run ~M-x straight-pull-package khoj~
