README file from
GithubWhat is Darjeeling?
Project Darjeeling is an Obsidian plugin and companion server daemon designed to integrate AI coding agents and large language models seamlessly into your personal knowledge base.
- Persistent Sessions: Start an agent turn on your laptop, close the lid, and pick up the stream or interrupt it from your phone.
- Architectural Plans as Notes: Decompose complex tasks into phase-gated plans, track task checkboxes, and export directly to Markdown notes and 2D visual Obsidian Canvases (
.canvas). - Mobile-First Ergonomics: Touch-calibrated 44px hit targets, virtual terminal accessory keys, and responsive layouts that fit mobile sidebars.
- Privacy & Ownership: Your notes stay in your vault. Server connections run over encrypted private overlay networks (Tailscale, Meshnet, WireGuard) with zero third-party telemetry.
Who It Is For (and Not For)
Who It Is For
- Developers & Technical Writers: You work inside an Obsidian vault alongside git repositories and want agents like Claude Code to inspect files, run tests, and refactor code without leaving your notes.
- Self-Hosters & Homelabbers: You run a dedicated Linux machine, VPS, or tethered workstation and want to offload heavy agent compilation and turn processing.
- Multi-Device Thinkers: You plan initiatives on desktop and review or follow up on progress from your phone or tablet on the go.
Who It Is NOT For
- If you only want to converse with Claude on your phone and do not use Obsidian or have a repository to inspect, you do not need Darjeeling. Use the official Claude iOS/Android app or Anthropic's Remote Control feature.
How It Works
Darjeeling provides three distinct runtime modes:
┌─────────────────────────────────────────────────────────────────────────┐
│ Obsidian Client (Any Device) │
│ Chat Surface • Plan Engine • Terminal │
└────────────────────────────────────┬────────────────────────────────────┘
│
┌──────────────────────────────┼──────────────────────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Direct API │ │ Local Mode │ │ Remote Server│
│(Zero Server) │ │(Desktop Only)│ │ (Companion) │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ │ │
▼ ▼ ▼
Google Gemini / Anthropic Local CLI (`claude`) Headless Linux
Claude / DeepSeek / Ollama & PTY in Vault Root Daemon (Port 8765)
- Remote Companion Server: A headless Python daemon (
darjeeling-server) running on your Linux host. Runs Claude Code and tmux terminal sessions, streaming bidirectional Protocol v2 WebSocket events to your desktop or mobile Obsidian app over private overlay networks. - Desktop Local Mode: Spawns local CLI agents (
claude,agy) and an embedded Python PTY terminal directly on macOS or Linux desktop within your vault working directory. - Direct Provider API: Connects Obsidian directly to Google Gemini, Anthropic Claude, DeepSeek, Ollama, or OpenAI-compatible endpoints with zero server requirements.
Runtime Compatibility Matrix
| Runtime Mode | Supported Platforms | Shell & Tools | Session Resumption | Notes & Canvas Export | Status |
|---|---|---|---|---|---|
| Remote Companion Server | Linux Host(Client: macOS, Linux, Windows, iOS, iPadOS, Android) | Yes (Full bash & tmux) | Yes (Protocol v2 async turn recovery) | Yes | Stable (v1.0) |
| Desktop Local Mode | macOS, Linux Desktop | Yes (Local PTY) | Process lifetime | Yes | Stable (v1.0) |
| Direct Provider API | macOS, Linux, Windows, iOS, iPadOS, Android | No (Completion only) | No | Yes | Stable (v1.0) |
[!NOTE] Agent Support: Claude Code (
claude, tested versions0.2.29–0.2.32) is the primary supported agent CLI. Support for Google Antigravity (agy) and DeepSeek CLI is Experimental. Platforms: Tested on macOS and Linux. Windows, iOS, Android and iPadOS are supported.
Quick Starts
Option 1: Remote Companion Server (4 Steps)
- Install Server Daemon on your Linux host (Debian 12/13 or Ubuntu 22.04/24.04). Download the installer, the server tarball and
SHA256SUMSfrom the latest release, verify, then run:
VER=1.0.4
BASE=https://github.com/michaelperna/obsidian-darjeeling/releases/download/$VER
curl -fsSL -O "$BASE/install.sh" -O "$BASE/darjeeling-server-$VER.tar.gz" -O "$BASE/SHA256SUMS"
sha256sum --ignore-missing -c SHA256SUMS
sudo bash install.sh --yes --network auto
- Authenticate Agent as the service user (the installer prints this command, with the full path to
claudeif it is not on the service user'sPATH):
sudo runuser -u darjeeling -- claude login
- Pair Device: Run
sudo darjeeling pairon the server (the installer also prints a code), then enter the 8-digit code in Obsidian under Settings > Darjeeling > Connections. A paired desktop can generate codes for your other devices. - Synchronize Vault: Configure Syncthing, git, or Obsidian Headless Sync between your devices and
/var/lib/darjeeling/vault(remembering to exclude.obsidian/in both directions).
Full installation details: Server Installation Guide.
Option 2: Direct API Mode (No Server Required)
- Install and enable the Darjeeling plugin in Obsidian.
- Navigate to Settings > Darjeeling > Providers.
- Select your provider (Google Gemini, Anthropic Claude, DeepSeek, or Ollama) and enter your API key.
- Open the Darjeeling leaf from the ribbon or command palette and start chatting immediately.
Full details: Direct API Guide.
Security, Privacy & Network Egress
Darjeeling is designed specifically for sensitive personal and professional knowledge vaults:
- Strict Permission Sandboxing: By default, agents operate in
planmode (read-only analysis). Modifying workspace files requiresacceptEdits, and autonomous commands requirebypassPermissions(subject to the host server's permission ceiling). - Protected Bearer Tokens: Tokens are stored exclusively in device-local storage (
SecretStorage). Revoking a device terminates active WebSockets immediately. - No Third-Party Telemetry: Hardware metrics stay on your host machine. Telemetry polling only runs when the Host tab is open and active.
Network use and data
Every outbound network call site is audited and accounted for. Outbound network traffic is strictly restricted to configured endpoints, direct LLM providers, or user-clicked hyperlinks:
| ID | Destination | Protocol | Purpose | Data Sent |
|---|---|---|---|---|
host-ws |
Configured Darjeeling host | WebSocket | Agent event streaming & interactive turns | Prompts, permission responses, session inputs |
host-http |
Configured Darjeeling host | HTTP/HTTPS | Health checks, agent listing, async turn management | Authentication token in header, turn options |
host-pairing |
Configured Darjeeling host | HTTP/HTTPS | Device token exchange & pairing verification | 8-digit pairing code, device metadata |
host-sync |
Configured Darjeeling host | HTTP/HTTPS | Vault note sync to remote host workspace | Selected markdown note content & relative path |
host-terminal |
Configured Darjeeling host | WebSocket | Remote interactive PTY terminal session | Keystrokes, terminal dimensions, auth token in protocol header |
provider-anthropic |
Anthropic API (api.anthropic.com) |
HTTPS | Direct LLM completions & model listing | User prompts, optional system prompt, api key in header |
provider-gemini |
Google Gemini API (generativelanguage.googleapis.com) |
HTTPS | Direct LLM completions & model listing | User prompts, optional system prompt, api key in header |
provider-deepseek |
DeepSeek API (api.deepseek.com) |
HTTPS | Direct LLM completions & model listing | User prompts, optional system prompt, api key in header |
provider-ollama |
Local or configured Ollama instance | HTTP/HTTPS | Direct LLM completions & model listing | User prompts, optional system prompt |
provider-openai |
OpenAI-compatible endpoint | HTTP/HTTPS | Direct LLM completions & model listing | User prompts, optional system prompt, api key in header |
browser-open |
External browser target | OS URL Handler | Opening terminal hyperlinks in external browser | Destination URL clicked by user |
Accounts, Pricing & Billing
- 100% Free & Open Source: Project Darjeeling is free software released under the MIT License. There are no subscriptions, hidden fees, seat charges, or token markups.
- Bring Your Own Keys / Accounts: All API usage is billed directly to your own account with each respective model provider (Google Cloud, Anthropic, DeepSeek, OpenRouter, etc.).
- Self-Hosted Infrastructure: You provide your own server or compute instance (e.g., local home computer, spare laptop, Raspberry Pi 5, or private cloud VM).
Processes & Filesystem Access
- Local Mode: Runs child processes directly under your personal user account. Subprocesses have access to your vault directory according to the selected permission mode.
- Companion Server Mode: Runs as an unprivileged dedicated service user (
darjeeling) with systemd hardening (NoNewPrivileges=yes,ProtectSystem=full). - Vault Code Path Isolation: Sync engines must exclude
.obsidian/in both directions so that server-side file edits can never write untrusted plugins or snippets to connected client devices.
Documentation
- Setup & Operations:
- Agent Execution & Workflows:
- Monitoring & Reference:
- Contributing & Policies:
Credits & Acknowledgements
Project Darjeeling is built on open standards and open-source software: