-
Notifications
You must be signed in to change notification settings - Fork 0
1.1 ClioDeck Installation ‐ Linux
This guide walks you through the complete installation of ClioDeck on Linux, from prerequisites to first launch.
- System Requirements
- Installing Dependencies
- Installing ClioDeck
- Initial Configuration
- Verifying Installation
- Troubleshooting
- Distribution: Ubuntu 20.04+ (tested), should work on Debian 11+, Fedora 35+, Arch Linux, or compatible
-
Architecture: x86_64 and arm64 are both published, as AppImage and
.deb. If you are unsure which you have, rununame -m:x86_64(also called amd64) means the x86_64 files,aarch64the arm64 ones. The wrong one downloads perfectly and then refuses to start. - Disk Space: At least 5 GB free (for application, Ollama models, python and dependencies, tex-live for XeLaTeX, pandoc)
- Memory: 8 GB RAM minimum, 16 GB recommended
- System Libraries: libgtk-3, libnotify, libnss3, libxss1, libxtst6, xdg-utils, libatspi2.0, libsecret-1 (Keyring access for stored API keys), libgbm
sudo apt update
sudo apt install -y \
curl \
wget \
git \
build-essential \
libgtk-3-0 \
libnotify4 \
libnss3 \
libxss1 \
libxtst6 \
xdg-utils \
libatspi2.0-0 \
libsecret-1-0 \
libgbm1 \
pandoc \
texlive-xetex \
texlive-fonts-recommended \
texlive-lang-frenchNote: Pandoc and XeLaTeX are required for PDF export from ClioDeck.
sudo dnf install -y \
curl \
wget \
git \
gcc-c++ \
make \
gtk3 \
libnotify \
nss \
libXScrnSaver \
libXtst \
xdg-utils \
at-spi2-core \
libsecret \
mesa-libgbm \
pandoc \
texlive-xetex \
texlive-collection-fontsrecommended \
texlive-babel-frenchsudo pacman -Syu --needed \
curl \
wget \
git \
base-devel \
gtk3 \
libnotify \
nss \
libxss \
libxtst \
xdg-utils \
at-spi2-core \
libsecret \
mesa \
pandoc \
texlive-core \
texlive-fontsrecommended \
texlive-langClioDeck requires Node.js 20+ and npm 10+.
Ubuntu/Debian:
# Install NodeSource repository for Node.js 20
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
# Install Node.js and npm
sudo apt install -y nodejs
# Verify versions
node --version # Should show v20.x.x or higher
npm --version # Should show 10.x.x or higherFedora/RHEL/CentOS:
# Install NodeSource repository for Node.js 20
curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -
# Install Node.js and npm
sudo dnf install -y nodejs
# Verify versions
node --version
npm --versionArch Linux:
# Node.js 20+ is available in official repositories
sudo pacman -S nodejs npm
# Verify versions
node --version
npm --versionUseful for managing multiple Node.js versions:
# Install nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# Reload your shell
source ~/.bashrc # or ~/.zshrc if using zsh
# Install Node.js 20
nvm install 20
nvm use 20
nvm alias default 20
# Verify
node --version
npm --versionClioDeck uses Python for certain services (topic modeling). Python 3.11+ is required.
# Check if Python 3.11+ is installed
python3 --version
# If necessary (Ubuntu 22.04+, Debian 12+)
sudo apt install -y python3 python3-pip python3-venv
# For Ubuntu 20.04/Debian 11, install from deadsnakes PPA
sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.11 python3.11-venv python3.11-dev# Python 3.11+ should be available
sudo dnf install -y python3 python3-pip python3-devel
# Verify
python3 --version# Python 3.12+ is in repositories
sudo pacman -S python python-pip
# Verify
python --versionNote: The Python virtual environment (venv) is not created automatically — it's a manual step from Settings → Topic Modeling, where you check status and trigger the install.
Ollama is required for local AI features (embeddings and chat).
# Install Ollama
curl -fsSL https://ollama.ai/install.sh | shThis script:
- Downloads and installs Ollama in
/usr/local/bin/ - Creates a systemd service
ollama.service - Automatically starts the service
Ubuntu/Debian/Fedora/RHEL:
# Download binary
curl -L https://ollama.ai/download/ollama-linux-amd64 -o ollama
chmod +x ollama
sudo mv ollama /usr/local/bin/
# Create systemd service
sudo tee /etc/systemd/system/ollama.service > /dev/null <<EOF
[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
[Install]
WantedBy=default.target
EOF
# Create ollama user
sudo useradd -r -s /bin/false -m -d /usr/share/ollama ollama
# Start service
sudo systemctl daemon-reload
sudo systemctl enable ollama
sudo systemctl start ollamaArch Linux:
# Via AUR
yay -S ollama
# Or from source
git clone https://aur.archlinux.org/ollama.git
cd ollama
makepkg -si
# Start service
sudo systemctl enable --now ollama# Check status
systemctl status ollama
# Verify server responds
curl http://localhost:11434/api/tags# Embedding model (required for RAG search)
ollama pull nomic-embed-text
# Chat model (recommended)
ollama pull gemma2:2bmxbai-embed-large is a valid alternative embedding model, but it is not an automatic fallback — ClioDeck does not switch between the two on its own; whichever one you pick in Settings → LLM is the one used.
Note on tool use: gemma2:2b cannot call tools (search your corpus, use MCP servers) inside Brainstorm — Ollama only advertises tool support for a specific model whitelist. If you want the assistant to search your corpus on its own, pull a tool-capable model instead:
ollama pull qwen3:8b # or ministral-3:8b / ministral-3:14b / mistral-nemoVerification:
# List installed models
ollama list
# Should show at minimum:
# nomic-embed-text
# gemma2:2bGrab the current release from the Releases page. v1.0.0-rc.4 publishes an AppImage and a .deb for x86_64 and for arm64. No .rpm is built; Fedora/RHEL/Arch users should take the AppImage.
Check which one you need before downloading — the commands below assume x86_64, the common case:
uname -m # x86_64 → the x86_64 files; aarch64 → the arm64 ones# Note the `Linux.AppImage.-.` prefix: asset names gained it in rc.4, so a
# URL built by bumping the version number alone returns 404.
wget https://github.com/cliodeck/cliodeck-app/releases/download/v1.0.0-rc.4/Linux.AppImage.-.ClioDeck-1.0.0-rc.4-x86_64.AppImage -O ClioDeck.AppImage
# On arm64, replace `-x86_64` with `-arm64` in the URL above.
# Make executable
chmod +x ClioDeck.AppImage
# Launch
./ClioDeck.AppImageSystem integration (optional):
# Move to standard location
mkdir -p ~/.local/bin
mv ClioDeck.AppImage ~/.local/bin/cliodeck
# Create desktop menu entry
mkdir -p ~/.local/share/applications
cat > ~/.local/share/applications/cliodeck.desktop <<EOF
[Desktop Entry]
Name=ClioDeck
Comment=Writing assistant for historians
Exec=$HOME/.local/bin/cliodeck %U
Icon=cliodeck
Terminal=false
Type=Application
Categories=Office;TextEditor;
MimeType=text/markdown;
EOF
# Update applications cache
update-desktop-database ~/.local/share/applications# Note the `Linux.Debian.-.` prefix: asset names gained it in rc.4, so a
# URL built by bumping the version number alone returns 404.
# Debian names the x86_64 architecture `amd64`; on arm64 replace it with `arm64`.
wget https://github.com/cliodeck/cliodeck-app/releases/download/v1.0.0-rc.4/Linux.Debian.-.cliodeck_1.0.0-rc.4_amd64.deb
# Install
sudo dpkg -i Linux.Debian.-.cliodeck_1.0.0-rc.4_amd64.deb
# Resolve missing dependencies (if necessary)
sudo apt-get install -f
# Launch
cliodeckTo contribute to the project or run the development version:
-
Clone the repository
git clone https://github.com/cliodeck/cliodeck-app.git cd cliodeck-app -
Install npm dependencies
Native modules (
better-sqlite3,hnswlib-node) are automatically rebuilt for Electron's ABI by thepostinstallscript — no separate compile step needed:npm install
-
Build the project
npm run build
-
Launch in development mode
# Method 1: All in one npm run dev:full # Method 2: Separate (for development) # Terminal 1: Compile in watch mode npm run dev # Terminal 2: Launch application npm start
-
Build application for distribution
# Build for Linux (AppImage + deb) npm run build:linux # Files land in release/, named after the current package.json version
On first ClioDeck launch:
The first time you open Settings, ClioDeck checks the connection to Ollama (http://localhost:11434) — this happens when Settings mounts, not automatically at app launch.
If connection fails:
# Check service status
systemctl status ollama
# Restart if necessary
sudo systemctl restart ollama
# Verify port 11434 is open
curl http://localhost:11434/api/tags- Open Settings → LLM Configuration
- Verify settings:
- Backend: Ollama (default)
- URL: http://localhost:11434
- Embedding Model: nomic-embed-text
- Chat Model: gemma2:2b
- There's no "Test Connection" button here (that's Zotero's, further down) — use the 🔄 refresh-models button to confirm Ollama responds and lists your installed models
-
New Project → choose a folder and a project type: article (a single
document.md), book (chapters as separate files underchapters/), or presentation (slides.md). - ClioDeck creates the structure (article example):
A book project has no
my-project/ ├── project.json # Project manifest and settings ├── document.md # Your text (byte-for-byte, no internal conversion) ├── context.md # Subject, period, conventions — given to the assistant └── .cliodeck/ ├── config.json # Provider/workspace config ├── brain.db # PDF/Tropy vectors, research history (shared store) └── hints.md # Workspace house rules (optional)document.md— its chapters live underchapters/, listed inproject.json.
If you use Zotero:
- Get your API Key: https://www.zotero.org/settings/keys/new
- Permissions: "Read library" and "Write library"
- In ClioDeck: Settings → Zotero Integration
- Enter your User ID and API Key
- Test Connection
-
Verify Ollama
# Check service systemctl status ollama # Test API curl http://localhost:11434/api/tags # Should return list of installed models
-
Verify Node.js and npm
node --version # v20.x.x or higher npm --version # 10.x.x or higher
-
Verify Python
python3 --version # 3.11.x or higher -
Verify Pandoc and XeLaTeX
pandoc --version # 2.x or higher xelatex --version # TeX Live 2020+ or higher
-
Test ClioDeck
- Create a new project
- Add a PDF to your bibliography (Zotero import, or drag-and-drop)
- Index it via the interface
- Verify corpus displays statistics
ClioDeck does not currently write logs to a file — output goes to the console only. Launch it from a terminal to see it:
# AppImage
./ClioDeck.AppImage
# Installed via .deb
cliodeck# Check if Ollama is running
systemctl status ollama
# Restart service
sudo systemctl restart ollama
# Check logs
sudo journalctl -u ollama -n 50
# Test manually
ollama serveThis means the native module wasn't compiled for Electron.
cd /path/to/cliodeck-app
# Recompile native modules for Electron's ABI
npm run rebuild:native
# Relaunch
npm start# Check FUSE dependencies
# Ubuntu/Debian
sudo apt install libfuse2
# Fedora/RHEL
sudo dnf install fuse-libs
# Arch Linux
sudo pacman -S fuse2
# Make AppImage executable
chmod +x ClioDeck.AppImage
# Launch with --no-sandbox if necessary
./ClioDeck.AppImage --no-sandboxVerify Python 3 and venv are properly installed:
python3 --version
python3 -m venv --help
# Ubuntu/Debian: Install python3-venv if missing
sudo apt install python3-venv
# Fedora/RHEL
sudo dnf install python3-devel
# Arch Linux
sudo pacman -S pythonSystem libraries are probably missing:
# Check missing dependencies
ldd /path/to/cliodeck
# Ubuntu/Debian: Reinstall dependencies
sudo apt install --reinstall \
libgtk-3-0 libnotify4 libnss3 libxss1 \
libxtst6 xdg-utils libatspi2.0-0 libsecret-1-0 libgbm1
# Fedora/RHEL
sudo dnf reinstall \
gtk3 libnotify nss libXScrnSaver \
libXtst xdg-utils at-spi2-core libsecret mesa-libgbmOllama models consume RAM:
-
nomic-embed-text: ~1 GB -
gemma2:2b: ~2 GB -
mistral:7b-instruct: ~4 GB
Solutions:
- Close unused applications
- Use only
gemma2:2b(avoidmistral:7b-instruct) - Skip Ollama entirely: ClioDeck can also run on a small embedded model (Qwen2.5-0.5B, ~470 MB, downloaded from Settings → LLM) with no separate service to keep running
- Add swap:
# Create 4GB swap file sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile # Make permanent echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
If another service uses port 11434:
# Identify process
sudo lsof -i :11434
# Option 1: Stop other service
# Option 2: Configure Ollama on another port
sudo systemctl edit ollama
# Add:
[Service]
Environment="OLLAMA_HOST=127.0.0.1:11435"
# Restart
sudo systemctl daemon-reload
sudo systemctl restart ollama
# Then in ClioDeck Settings → LLM → URL: http://localhost:11435On some distributions with Wayland:
# Launch with --no-sandbox
./ClioDeck.AppImage --no-sandbox
# Or set environment variable (note the exact name: ELECTRON_DISABLE_SANDBOX,
# not ELECTRON_NO_SANDBOX — the latter is not a real Electron env var and
# has no effect)
export ELECTRON_DISABLE_SANDBOX=1
./ClioDeck.AppImage- Documentation: ClioDeck Wiki
- Issues: GitHub Issues
To completely uninstall ClioDeck:
# Remove AppImage
rm ~/.local/bin/cliodeck
# Remove menu entry
rm ~/.local/share/applications/cliodeck.desktop
update-desktop-database ~/.local/share/applications
# Remove user data (Electron's default userData path on Linux; the app
# never overrides it with app.setName() or a custom getPath() call, and
# doesn't write anything under ~/.local/share)
rm -rf ~/.config/cliodeck# Uninstall
sudo apt remove cliodeck
# Remove data
rm -rf ~/.config/cliodeck# Remove cloned repository
rm -rf /path/to/cliodeck
# Remove user data
rm -rf ~/.config/cliodeck# Stop service
sudo systemctl stop ollama
sudo systemctl disable ollama
# Remove binary
sudo rm /usr/local/bin/ollama
# Remove systemd service
sudo rm /etc/systemd/system/ollama.service
sudo systemctl daemon-reload
# Remove data
sudo rm -rf /usr/share/ollama
sudo rm -rf ~/.ollama
# Remove user
sudo userdel ollamaNote: Your ClioDeck projects (.md files, PDFs, .cliodeck/) are not automatically deleted.
Once ClioDeck is installed, see Getting Started for your first project.
- Use deadsnakes PPA for Python 3.11+
- Node.js 20 via NodeSource
- Ollama via automatic installation script
- Python 3.11+ available by default
- Node.js 20 via NodeSource or dnf
- Ollama via automatic installation script
- All dependencies in official repositories
- Ollama via AUR (yay -S ollama)
- Continuous updates (rolling release)
License: GPLv3 Support: Open an issue on GitHub for any questions