feat: update opencode config with new providers, clean up tmux config, add pi agent & installer scripts
This commit is contained in:
@@ -1,27 +1,75 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://opencode.ai/config.json",
|
"$schema": "https://opencode.ai/config.json",
|
||||||
"model": "openai/gpt-5.3-codex",
|
"model": "opencode-go/mimo-v2.5-pro",
|
||||||
"theme": "gruvbox",
|
|
||||||
"autoupdate": true,
|
"autoupdate": true,
|
||||||
"share": "disabled",
|
"share": "disabled",
|
||||||
"keybinds": {
|
|
||||||
"messages_half_page_up": "ctrl+u",
|
|
||||||
"messages_half_page_down": "ctrl+d",
|
|
||||||
"messages_first": "ctrl+g",
|
|
||||||
"messages_last": "ctrl+l",
|
|
||||||
},
|
|
||||||
"provider": {
|
"provider": {
|
||||||
"ollama": {
|
"vllm": {
|
||||||
"npm": "@ai-sdk/openai-compatible",
|
"npm": "@ai-sdk/openai-compatible",
|
||||||
"name": "Ollama",
|
"name": "dupont vLLM server",
|
||||||
"options": {
|
"options": {
|
||||||
"baseURL": "http://129.100.33.66:11434/v1"
|
"baseURL": "http://172.25.11.32/v1"
|
||||||
},
|
},
|
||||||
"models": {
|
"models": {
|
||||||
"qwen3-coder": {
|
"north-mini-code": {
|
||||||
"name": "qwen3-coder-next"
|
"name": "north-mini-code",
|
||||||
|
"limit": {
|
||||||
|
"context": 32768,
|
||||||
|
"output": 4096
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"allears": {
|
||||||
|
"npm": "@ai-sdk/openai-compatible",
|
||||||
|
"name": "allears",
|
||||||
|
"options": {
|
||||||
|
"baseURL": "http://192.168.33.74:11434/v1"
|
||||||
|
},
|
||||||
|
"models": {
|
||||||
|
"qwen3.5": {
|
||||||
|
"name": "qwen3.5:35b"
|
||||||
|
},
|
||||||
|
"qwen3.6": {
|
||||||
|
"name": "qwen3.6:35b"
|
||||||
|
},
|
||||||
|
"lfm2": {
|
||||||
|
"name": "lfm2:latest"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dupont": {
|
||||||
|
"npm": "@ai-sdk/openai-compatible",
|
||||||
|
"name": "dupont",
|
||||||
|
"options": {
|
||||||
|
"discoverModels": true,
|
||||||
|
"baseURL": "http://172.25.11.30/v1"
|
||||||
|
},
|
||||||
|
"models": {
|
||||||
|
"north-mini-code": { "name": "north-mini-code" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"obelix": {
|
||||||
|
"npm": "@ai-sdk/openai-compatible",
|
||||||
|
"name": "obelix",
|
||||||
|
"options": {
|
||||||
|
"discoverModels": true,
|
||||||
|
"baseURL": "http://172.25.11.32/v1"
|
||||||
|
},
|
||||||
|
"models": {
|
||||||
|
"north-mini-code": { "name": "north-mini-code" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"bianca": {
|
||||||
|
"npm": "@ai-sdk/openai-compatible",
|
||||||
|
"name": "bianca",
|
||||||
|
"options": {
|
||||||
|
"discoverModels": true,
|
||||||
|
"baseURL": "http://172.25.11.33/v1"
|
||||||
|
},
|
||||||
|
"models": {
|
||||||
|
"north-mini-code": { "name": "north-mini-code" }
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,61 @@
|
|||||||
|
{
|
||||||
|
"providers": {
|
||||||
|
"dupont": {
|
||||||
|
"baseUrl": "http://172.25.11.30/v1",
|
||||||
|
"api": "openai-completions",
|
||||||
|
"models": [
|
||||||
|
{
|
||||||
|
"id": "north-mini-code",
|
||||||
|
"name": "north-mini-code",
|
||||||
|
"reasoning": true,
|
||||||
|
"input": ["text"],
|
||||||
|
"contextWindow": 128000,
|
||||||
|
"maxTokens": 128000,
|
||||||
|
"cost": { "input": 1, "output": 1, "cacheRead": 1, "cacheWrite": 1 }
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"compat": {
|
||||||
|
"supportsDeveloperRole": true,
|
||||||
|
"supportsReasoningEffort": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"bianca": {
|
||||||
|
"baseUrl": "http://172.25.11.33/v1",
|
||||||
|
"api": "openai-completions",
|
||||||
|
"models": [
|
||||||
|
{
|
||||||
|
"id": "gemma-4-12B-coder",
|
||||||
|
"name": "gemma-4-12B-coder",
|
||||||
|
"reasoning": true,
|
||||||
|
"input": ["text"],
|
||||||
|
"contextWindow": 128000,
|
||||||
|
"maxTokens": 65536,
|
||||||
|
"cost": { "input": 1, "output": 1, "cacheRead": 1, "cacheWrite": 1 }
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"compat": {
|
||||||
|
"supportsDeveloperRole": true,
|
||||||
|
"supportsReasoningEffort": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cloudflare": {
|
||||||
|
"baseUrl": "https://api.cloudflare.com/client/v4/accounts/e54fa0b493ef3bef55746b1de8d33693/ai/v1",
|
||||||
|
"api": "openai-completions",
|
||||||
|
"models": [
|
||||||
|
{
|
||||||
|
"id": "@cf/zai-org/glm-5.2",
|
||||||
|
"name": "@cf/zai-org/glm-5.2",
|
||||||
|
"reasoning": true,
|
||||||
|
"input": ["text"],
|
||||||
|
"contextWindow": 256000,
|
||||||
|
"maxTokens": 256000,
|
||||||
|
"cost": { "input": 1, "output": 1, "cacheRead": 1, "cacheWrite": 1 }
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"compat": {
|
||||||
|
"supportsDeveloperRole": true,
|
||||||
|
"supportsReasoningEffort": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"lastChangelogVersion": "0.80.2",
|
||||||
|
"theme": "light/dark",
|
||||||
|
"defaultProvider": "opencode-go",
|
||||||
|
"defaultModel": "deepseek-v4-flash",
|
||||||
|
"defaultThinkingLevel": "high",
|
||||||
|
"hideThinkingBlock": true,
|
||||||
|
"compaction": {
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
"enableInstallTelemetry": false
|
||||||
|
}
|
||||||
+126
-125
@@ -1,159 +1,160 @@
|
|||||||
#set-option -g default-terminal 'screen-256color'
|
# set-option -g default-terminal 'screen-256color'
|
||||||
set-option -g terminal-overrides ',xterm-256color:RGB'
|
# set-option -g terminal-overrides ',xterm-256color:RGB'
|
||||||
# set -g default-terminal "tmux-256color"
|
# set -g default-terminal "tmux-256color"
|
||||||
set -as terminal-feature ",foot*:RGB"
|
set -as terminal-feature ",foot*:RGB"
|
||||||
|
|
||||||
# screen mode
|
# screen mode
|
||||||
#set -g default-terminal "${TERM}"
|
# set -g default-terminal "${TERM}"
|
||||||
#set -g default-terminal "tmux-256color"
|
# set -g default-terminal "tmux-256color"
|
||||||
set -ag terminal-overrides ",xterm-256color:RGB"
|
# set -ag terminal-overrides ",xterm-256color:RGB"
|
||||||
|
|
||||||
# colors
|
# colors
|
||||||
# set -ag terminal-overrides ",xterm*:Tc"
|
# set -ag terminal-overrides ",xterm*:Tc"
|
||||||
|
|
||||||
# undercurl support
|
# undercurl support
|
||||||
set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm'
|
# set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm'
|
||||||
# underscore colours - needs tmux-3.0
|
# underscore colours - needs tmux-3.0
|
||||||
set -as terminal-overrides ',*:Setulc=\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m'
|
# set -as terminal-overrides ',*:Setulc=\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m'
|
||||||
# allow terminal scrolling
|
# allow terminal scrolling
|
||||||
#set -g terminal-overrides 'xterm*:smcup@:rmcup@'
|
#set -g terminal-overrides 'xterm*:smcup@:rmcup@'
|
||||||
|
|
||||||
# default shell
|
# default shell
|
||||||
set -g default-shell "/usr/bin/fish"
|
set -g default-shell "/usr/bin/fish"
|
||||||
|
|
||||||
# auto rename windows
|
# auto rename windows
|
||||||
set -g automatic-rename on
|
# set -g automatic-rename on
|
||||||
set -g automatic-rename-format '#{pane_current_command} #{b:pane_current_path}'
|
# set -g automatic-rename-format '#{pane_current_command} #{b:pane_current_path}'
|
||||||
set -g allow-rename on
|
set -g allow-rename on
|
||||||
|
|
||||||
# start with window 1 (instead of 0)
|
# start with window 1 (instead of 0)
|
||||||
set -g base-index 1
|
set -g base-index 1
|
||||||
|
|
||||||
# start with pane 1
|
# start with pane 1
|
||||||
setw -g pane-base-index 1
|
setw -g pane-base-index 1
|
||||||
|
|
||||||
# history
|
# history
|
||||||
set -g history-limit 5000
|
set -g history-limit 5000
|
||||||
|
|
||||||
# loud or quiet?
|
# loud or quiet?
|
||||||
set -g visual-activity off
|
set -g visual-activity off
|
||||||
set -g visual-bell off
|
set -g visual-bell off
|
||||||
set -g visual-silence off
|
set -g visual-silence off
|
||||||
set -g monitor-activity on
|
set -g monitor-activity on
|
||||||
set -g bell-action none
|
set -g bell-action none
|
||||||
set -g allow-passthrough on
|
set -g allow-passthrough on
|
||||||
|
|
||||||
#set -g bell-on-alert on
|
#set -g bell-on-alert on
|
||||||
|
|
||||||
set -s escape-time 1
|
set -s escape-time 1
|
||||||
setw -g aggressive-resize on
|
setw -g aggressive-resize on
|
||||||
set -g status-keys vi
|
set -g status-keys vi
|
||||||
set-window-option -g mode-keys vi
|
set-window-option -g mode-keys vi
|
||||||
|
|
||||||
set -g extended-keys on
|
set -g extended-keys on
|
||||||
set -g extended-keys-format csi-u
|
set -g extended-keys-format csi-u
|
||||||
set-option -g focus-events on # TODO: learn how this works
|
set-option -g focus-events on # TODO: learn how this works
|
||||||
set-option -g set-titles on
|
set-option -g set-titles on
|
||||||
set-option -g detach-on-destroy off
|
set-option -g detach-on-destroy off
|
||||||
set-option -g renumber-windows on
|
set-option -g renumber-windows on
|
||||||
set-option -g set-clipboard on
|
set-option -g set-clipboard on
|
||||||
set-option -g set-titles-string "#S:#{pane_title}"
|
set-option -g set-titles-string "#S:#{pane_title}"
|
||||||
|
|
||||||
unbind C-Space
|
unbind C-Space
|
||||||
set -g prefix C-Space
|
set -g prefix C-Space
|
||||||
bind C-Space send-prefix
|
bind C-Space send-prefix
|
||||||
#unbind C-s
|
#unbind C-s
|
||||||
unbind C-b
|
unbind C-b
|
||||||
#set -g prefix C-s
|
#set -g prefix C-s
|
||||||
#bind C-s send-prefix
|
#bind C-s send-prefix
|
||||||
|
|
||||||
# Reload the config.
|
# Reload the config.
|
||||||
bind r source-file ~/.config/tmux/tmux.conf \; display "Reloaded ~/.config/tmux/tmux.conf"
|
bind r source-file ~/.config/tmux/tmux.conf \; display "Reloaded ~/.config/tmux/tmux.conf"
|
||||||
|
|
||||||
bind-key -T copy-mode-vi v send-keys -X begin-selection
|
bind-key -T copy-mode-vi v send-keys -X begin-selection
|
||||||
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel
|
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel
|
||||||
|
|
||||||
bind c new-window -c "#{pane_current_path}"
|
bind c new-window -c "#{pane_current_path}"
|
||||||
bind e run "tmux split -h /usr/bin/nvim"
|
bind e run "tmux split -h /usr/bin/nvim"
|
||||||
bind o display-popup -w 80% -h 80% -E /usr/bin/opencode
|
bind o display-popup -w 80% -h 80% -E /usr/bin/opencode
|
||||||
bind g display-popup -w 80% -h 80% -E /usr/bin/lazygit
|
bind g display-popup -w 80% -h 80% -E /usr/bin/lazygit
|
||||||
|
|
||||||
# split windows like vim
|
# split windows like vim
|
||||||
# vim's definition of a horizontal/vertical split is reversed from tmux's
|
# vim's definition of a horizontal/vertical split is reversed from tmux's
|
||||||
bind v split-window -h -c "#{pane_current_path}"
|
bind v split-window -h -c "#{pane_current_path}"
|
||||||
bind s split-window -v -c "#{pane_current_path}"
|
bind s split-window -v -c "#{pane_current_path}"
|
||||||
|
|
||||||
# Rotate windows
|
# Rotate windows
|
||||||
bind -r , select-window -t :-
|
bind -r , select-window -t :-
|
||||||
bind -r . select-window -t :+
|
bind -r . select-window -t :+
|
||||||
|
|
||||||
bind Space choose-tree
|
bind Space choose-tree
|
||||||
bind -r < previous-layout
|
bind -r < previous-layout
|
||||||
bind -r > next-layout
|
bind -r > next-layout
|
||||||
|
|
||||||
# open man page in new window
|
# open man page in new window
|
||||||
bind / command-prompt "split window 'exec man %%'"
|
bind / command-prompt "split window 'exec man %%'"
|
||||||
|
|
||||||
bind B command-prompt -p "New Session:" "new-session -A -s '%%'"
|
bind B command-prompt -p "New Session:" "new-session -A -s '%%'"
|
||||||
bind Tab switch-client -l
|
bind Tab switch-client -l
|
||||||
|
|
||||||
bind a run-shell -b "~/.local/bin/t"
|
bind t run-shell -b "~/.local/bin/t"
|
||||||
bind Enter run-shell -b "~/.local/bin/s"
|
bind Enter run-shell -b "~/.local/bin/s"
|
||||||
bind Q confirm kill-session
|
bind Q confirm kill-session
|
||||||
|
|
||||||
bind P pipe-pane -o "cat >>~/#W.log" \; display "Toggled logging to ~/#W.log"
|
bind P pipe-pane -o "cat >>~/#W.log" \; display "Toggled logging to ~/#W.log"
|
||||||
|
|
||||||
# join pane
|
# join pane
|
||||||
bind-key C-h choose-window 'join-pane -h -s "%%"'
|
bind-key C-h choose-window 'join-pane -h -s "%%"'
|
||||||
bind-key C-v choose-window 'join-pane -s "%%"'
|
bind-key C-v choose-window 'join-pane -s "%%"'
|
||||||
|
|
||||||
bind -r h select-pane -L
|
bind -r h select-pane -L
|
||||||
bind -r j select-pane -D
|
bind -r j select-pane -D
|
||||||
bind -r k select-pane -U
|
bind -r k select-pane -U
|
||||||
bind -r l select-pane -R
|
bind -r l select-pane -R
|
||||||
|
|
||||||
# resize panes like vim
|
# resize panes like vim
|
||||||
# feel free to change the "1" to however many lines you want to resize by, only
|
# feel free to change the "1" to however many lines you want to resize by, only
|
||||||
# one at a time can be slow
|
# one at a time can be slow
|
||||||
bind -r H resize-pane -L 5
|
bind -r H resize-pane -L 5
|
||||||
bind -r L resize-pane -R 5
|
bind -r L resize-pane -R 5
|
||||||
bind -r J resize-pane -D 5
|
bind -r J resize-pane -D 5
|
||||||
bind -r K resize-pane -U 5
|
bind -r K resize-pane -U 5
|
||||||
|
|
||||||
# bind : to command-prompt like vim
|
# bind : to command-prompt like vim
|
||||||
# this is the default in tmux already
|
# this is the default in tmux already
|
||||||
# bind : command-prompt
|
# bind : command-prompt
|
||||||
|
|
||||||
# Alt+number to select window
|
# Alt+number to select window
|
||||||
bind -n M-1 select-window -t 1
|
bind -n M-1 select-window -t 1
|
||||||
bind -n M-2 select-window -t 2
|
bind -n M-2 select-window -t 2
|
||||||
bind -n M-3 select-window -t 3
|
bind -n M-3 select-window -t 3
|
||||||
bind -n M-4 select-window -t 4
|
bind -n M-4 select-window -t 4
|
||||||
bind -n M-5 select-window -t 5
|
bind -n M-5 select-window -t 5
|
||||||
bind -n M-6 select-window -t 6
|
bind -n M-6 select-window -t 6
|
||||||
bind -n M-7 select-window -t 7
|
bind -n M-7 select-window -t 7
|
||||||
bind -n M-8 select-window -t 8
|
bind -n M-8 select-window -t 8
|
||||||
bind -n M-9 select-window -t 9
|
bind -n M-9 select-window -t 9
|
||||||
|
|
||||||
set -g @continuum-restore 'on'
|
set -g @continuum-restore 'on'
|
||||||
set -g status-position top
|
set -g status-position top
|
||||||
|
|
||||||
|
|
||||||
# List of plugins
|
# List of plugins
|
||||||
set -g @plugin 'tmux-plugins/tpm'
|
set -g @plugin 'tmux-plugins/tpm'
|
||||||
set -g @plugin 'tmux-plugins/tmux-sensible'
|
set -g @plugin 'tmux-plugins/tmux-sensible'
|
||||||
set -g @plugin 'tmux-plugins/tmux-yank'
|
set -g @plugin 'tmux-plugins/tmux-yank'
|
||||||
set -g @plugin 'tmux-plugins/tmux-resurrect'
|
set -g @plugin 'tmux-plugins/tmux-resurrect'
|
||||||
set -g @plugin 'tmux-plugins/tmux-continuum'
|
set -g @plugin 'tmux-plugins/tmux-continuum'
|
||||||
set -g @plugin 'tmux-plugins/tmux-copycat'
|
set -g @plugin 'tmux-plugins/tmux-copycat'
|
||||||
set -g @plugin 'christoomey/vim-tmux-navigator'
|
set -g @plugin 'christoomey/vim-tmux-navigator'
|
||||||
set -g @plugin 'sainnhe/tmux-fzf'
|
set -g @plugin 'sainnhe/tmux-fzf'
|
||||||
set -g @plugin 'joshmedeski/tmux-fzf-url'
|
set -g @plugin 'joshmedeski/tmux-fzf-url'
|
||||||
set -g @plugin 'aserowy/tmux.nvim'
|
set -g @plugin 'aserowy/tmux.nvim'
|
||||||
|
set -g @plugin 'vieitesss/agent-radar'
|
||||||
|
|
||||||
set -g status-left ""
|
set -g status-left ""
|
||||||
source-file ~/.config/tmux/theme
|
source-file ~/.config/tmux/theme
|
||||||
#set -ag status-right '#(bash ~/.config/tmux/battery.sh) '
|
#set -ag status-right '#(bash ~/.config/tmux/battery.sh) '
|
||||||
|
|
||||||
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
|
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
|
||||||
run '~/.config/tmux/plugins/tpm/tpm'
|
run '~/.config/tmux/plugins/tpm/tpm'
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/sh -e
|
||||||
|
|
||||||
|
if [[ ! -x "$(command -v goose-desktop)" ]]; then
|
||||||
|
paru -Sy --needed --noconfirm goose-desktop-bin
|
||||||
|
fi
|
||||||
|
|
||||||
|
${DOTFILES_DIR}/sync-config config/goose
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/sh -e
|
||||||
|
|
||||||
|
if [[ ! -x "$(command -v goose)" ]]; then
|
||||||
|
paru -Sy --needed --noconfirm codename-goose-bin
|
||||||
|
fi
|
||||||
|
|
||||||
|
${DOTFILES_DIR}/sync-config config/goose
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/sh -e
|
||||||
|
|
||||||
|
if [[ ! -x "$(command -v obsidian)" ]]; then
|
||||||
|
paru -Sy --needed --noconfirm obsidian
|
||||||
|
fi
|
||||||
|
|
||||||
|
xdg-mime default obsidian.desktop x-scheme-handler/obsidian
|
||||||
|
xdg-settings set default-url-scheme-handler obsidian obsidian.desktop
|
||||||
@@ -6,4 +6,13 @@ if [[ ! -x "$(command -v pi)" ]]; then
|
|||||||
npm install -g pi-acp
|
npm install -g pi-acp
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
mkdir ~/.pi
|
||||||
|
ln -snf ~/.pi ~/.config/pi
|
||||||
|
ln -snf ~/.agents/.agents/AGENTS.md ~/.pi/agent/AGENTS.md
|
||||||
|
${DOTFILES_DIR}/sync-config config/pi
|
||||||
|
|
||||||
|
if [[ -x "$(command -v pass)" ]]; then
|
||||||
|
pass show agent/pi/agent/auth.json > ~/.pi/agent/auth.json
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user