Installation
This guide walks you through installing the Lovelace Neovim extension using various plugin managers.
Quick Install (Automated)
Run the automated installer for guided setup:
cd apps/neovim-extension
./install.sh
The installer will:
- ✅ Verify Neovim 0.9+ is installed
- ✅ Check for lattice-ctl availability
- ✅ Detect your plugin manager (lazy.nvim, packer, vim-plug)
- ✅ Provide installation instructions
- ✅ Generate example configuration
- ✅ Guide you through setup
Manual Installation
Step 1: Start Lattice Daemon
Ensure the Lattice daemon is running:
# Start the daemon
lattice-ctl daemon start
# Verify it's running
lattice-ctl daemon status
Step 2: Install Plugin
Using lazy.nvim (recommended)
{
"lovelace-ai/lovelace.nvim",
config = function()
require("lovelace").setup({
-- Optional configuration (see below)
})
end,
}
Using packer.nvim
use {
"lovelace-ai/lovelace.nvim",
config = function()
require("lovelace").setup()
end
}
Using vim-plug
Plug 'lovelace-ai/lovelace.nvim'
" In your init.vim
lua require("lovelace").setup()
Step 3: Verify Installation
After restarting Neovim, run the health check:
:LovelaceHealth
Expected Output:
✓ Connected to Lattice daemon
Socket: ~/.lovelace/lattice/daemon.sock
## Pairing / Trust
✗ Device not set up
ℹ Run :LovelaceAuth to pair this Neovim client
If you see errors, see Troubleshooting below.
Step 4: Pair Device (First Time Only)
If your device is not set up, run:
:LovelaceAuth
Follow the pairing flow:
- Press
cto copy the pairing code - Approve the code on a trusted device (for example:
ada pair approve <code>) - Press
rto refresh (optional) - Press
xto cancel (optional)
Configuration
Minimal Configuration (Default)
require("lovelace").setup()
This uses sensible defaults that work for most users.
Custom Configuration
require("lovelace").setup({
-- Daemon connection
daemon = {
socket_path = nil, -- Auto-discover (default: ~/.lovelace/lattice/daemon.sock)
auto_start = true, -- Start daemon if not running
retry_count = 3, -- Connection retry attempts
},
-- UI preferences
ui = {
result_window = "split", -- "split", "vsplit", "float", "tab"
progress_style = "notify", -- "notify", "statusline", "both"
float_width = 0.8, -- Floating window width (0.0-1.0)
float_height = 0.8, -- Floating window height (0.0-1.0)
float_border = "rounded", -- Window border style
},
-- Task defaults
tasks = {
auto_collect_context = true, -- Include file/selection automatically
default_workspace = nil, -- Use current workspace if nil
},
-- Keybindings
keymaps = {
enabled = true, -- Enable default keybindings
prefix = "<leader>l", -- Key prefix
},
-- Logging
log_level = "info", -- "debug", "info", "warn", "error"
})
For complete configuration options and detailed explanations, see the Configuration Guide.
Troubleshooting
Daemon Not Connected
Symptom: :LovelaceHealth shows "Disconnected"
Solution:
# Check daemon status
lattice-ctl daemon status
# Start if not running
lattice-ctl daemon start
Device Not Set Up
Symptom: :LovelaceHealth shows "Device not set up"
Solution:
:LovelaceAuth
" Press 'c' to copy pairing code, then approve it on a trusted device
Command Not Found
Symptom: E492: Not an editor command: LovelaceTask
Solution:
- Ensure plugin is loaded:
vim
:echo has('nvim-0.9') " Should return 1 - Verify plugin installation:
vim
:Lazy " If using lazy.nvim " Check that lovelace.nvim is installed - Restart Neovim
Verbose Logging
For debugging issues, enable verbose logging:
require("lovelace").setup({
log_level = "debug"
})
Then check :messages for detailed information.
For complete troubleshooting guide, see Troubleshooting.
Next Steps
- Quick Start - Submit your first task
- Health Check - Verify setup
- Configuration - Customize your setup