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.
- Compared to traditional commercial software (e.g., Evernote, Pocket)
- 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.
- 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.
- Compared to similar apps with AI features like Raindrop
- 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.
- Compared to other self-hosted note-taking software
- 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.
- 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.)
- 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
About using Ollama: [ollama-a-simple-solution-for-self-hosted-llms].
.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:
- First, I forgot to set the MELI_MASTER_KEY for both Meilisearch and the web container, causing the Search API to report an Authorization error.
- Second, I found that the Search function in the app couldn’t find anything. It was probably due to previous configuration errors, so indexing wasn’t working. The solution was to delete all Meilisearch data and redeploy/restart it.
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.