Hoarder: When Light Note-Taking and Bookmark Management Meet AI

TIP

Hoarder has been renamed to KaraKeep

In this era of information explosion, we are bombarded with various information every day, such as links, notes, pictures, and PDF files, which makes us dizzy. Organizing and managing this information is a real headache (and a hot topic: pkms). Then today I discovered Hoarder, which may be an efficient storage and organization solution for light notes, bookmarks, and “read it later.” Of course, it is also self-hosted.

This article records the experience of deploying hoarder and the initial user experience.

What is Hoader

Hoarder is a self-hosted bookmark management application that supports saving links, notes, and images, and features AI auto-tagging and full-text search capabilities. This app can automatically fetch the title, description, and image of a link, allowing users to sort bookmarks into lists and providing full-text search functionality for all stored content. Hoarder also integrates AI technologies like ChatGPT to enable automatic tagging, and supports the use of local models (e.g., via Ollama).

The key points are self-hosting + local LLM.

  1. Compared to traditional commercial software (e.g., Evernote, Pocket)
    1. Self-hosting: Unlike commercial software that requires you to hand over your data to third parties, Hoarder lets you store your data yourself. This means your bookmarks and notes are under your control, and you don’t have to worry about others seeing, deleting, or losing them.
    2. AI auto-tagging: Hoarder also has AI features that can automatically tag your content. Whether it’s images or text from web pages, it can understand and help organize them for you.
  2. Compared to similar apps with AI features like Raindrop
    1. It’s still self-hosting: Although apps like Raindrop have great features and AI technology, their data is stored on their servers. Hoarder allows you to store your data wherever you choose, offering greater security.
  3. Compared to other self-hosted note-taking software
    1. Lightweight design: Compared to other complex and hard-to-use self-hosted applications, Hoarder has a very simple input interface, similar to Google Keep. Everything is designed for quick input.
    2. Better mobile experience: Hoarder is also user-friendly on mobile devices and tablets, allowing you to easily manage your bookmarks and notes anytime, anywhere. (Of course, the mobile app is still in its early stages.)
    3. Local AI features: Unlike other applications that require an internet connection to use AI, Hoarder can run AI features on your own device. This means you don’t have to upload data to use features like auto-tagging, making it more convenient and private.

The developer has created a demo site: https://try.hoarder.app/ Feel free to try it out if you’re interested.

Installation

The recommended approach is docker-compose

version: "3.8"
     services:
       web:
         image: ghcr.io/hoarder-app/hoarder:0.17.1
         restart: unless-stopped
         volumes:
           - /data/hoarder/data:/data
         ports:
           - 3033:3000
         env_file:
           - .env
         environment:
           MEILI_ADDR: http://meilisearch:7700
           BROWSER_WEB_URL: http://chrome:9222
           MAX_ASSET_SIZE_MB: 16
           NEXTAUTH_URL: https://your-external-domain.com
           DISABLE_SIGNUPS: true
           OLLAMA_BASE_URL: http://ollama-server-ip:port
           OLLAMA_KEEP_ALIVE: 5m
           INFERENCE_TEXT_MODEL: "qwen2.5:7b"
           INFERENCE_IMAGE_MODEL: "minicpm-v:8b"
           INFERENCE_LANG: english
           INFERENCE_JOB_TIMEOUT_SEC: 60
           DATA_DIR: /data
       chrome:
         image: gcr.io/zenika-hub/alpine-chrome:123
         restart: unless-stopped
         env_file:
           - .env
         command:
           - --no-sandbox
           - --disable-gpu
           - --disable-dev-shm-usage
           - --remote-debugging-address=0.0.0.0
           - --remote-debugging-port=9222
           - --hide-scrollbars
       meilisearch:
         image: getmeili/meilisearch:v1.6
         restart: unless-stopped
         env_file:
           - .env
         environment:
           MEILI_NO_ANALYTICS: "true"
         volumes:
           - /data/hoarder/meilisearch:/meili_data

I directly chose to use ollama as the LLM backend. The two models are also the ones that have been tested and are currently the best options (fast and sufficiently usable). However, I sometimes still feel that open-source models are a bit lacking in the vision ability.

TIP

.env file:

MEILI_MASTER_KEY: <generate with openssl rand -base64 36>
NEXTAUTH_SECRET: <generate with openssl rand -base64 36>

Then run docker-compose up -d.

I encountered two issues when using it for the first time:

User Experience

The mobile experience is particularly good. Although the app is still in its early stages and many features are not yet available, the basic bookmarking functionality is already very smooth. Saving a webpage, saving an image, etc., are all very convenient.