seer-ai 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- seer_ai-1.0.0/.github/workflows/publish.yml +45 -0
- seer_ai-1.0.0/.gitignore +7 -0
- seer_ai-1.0.0/PKG-INFO +246 -0
- seer_ai-1.0.0/README.md +222 -0
- seer_ai-1.0.0/ROADMAP.md +141 -0
- seer_ai-1.0.0/install.sh +58 -0
- seer_ai-1.0.0/pyproject.toml +45 -0
- seer_ai-1.0.0/shell/setup.sh +194 -0
- seer_ai-1.0.0/src/seer/__init__.py +1 -0
- seer_ai-1.0.0/src/seer/cli.py +462 -0
- seer_ai-1.0.0/src/seer/config.py +216 -0
- seer_ai-1.0.0/src/seer/context.py +175 -0
- seer_ai-1.0.0/src/seer/providers/__init__.py +13 -0
- seer_ai-1.0.0/src/seer/providers/anthropic.py +57 -0
- seer_ai-1.0.0/src/seer/providers/base.py +9 -0
- seer_ai-1.0.0/src/seer/providers/openai.py +59 -0
- seer_ai-1.0.0/src/seer/shell/__init__.py +0 -0
- seer_ai-1.0.0/src/seer/shell/seer.bash +56 -0
- seer_ai-1.0.0/src/seer/shell/seer.zsh +53 -0
- seer_ai-1.0.0/src/seer/system_info.py +91 -0
- seer_ai-1.0.0/tests/test_config.py +252 -0
- seer_ai-1.0.0/uv.lock +438 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
name: Build & Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
build:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
|
|
11
|
+
steps:
|
|
12
|
+
- uses: actions/checkout@v4
|
|
13
|
+
|
|
14
|
+
- name: Install uv
|
|
15
|
+
uses: astral-sh/setup-uv@v5
|
|
16
|
+
|
|
17
|
+
- name: Build sdist and wheel
|
|
18
|
+
run: uv build
|
|
19
|
+
|
|
20
|
+
- name: Upload dist artifacts
|
|
21
|
+
uses: actions/upload-artifact@v4
|
|
22
|
+
with:
|
|
23
|
+
name: dist
|
|
24
|
+
path: dist/
|
|
25
|
+
|
|
26
|
+
publish:
|
|
27
|
+
needs: build
|
|
28
|
+
runs-on: ubuntu-latest
|
|
29
|
+
|
|
30
|
+
environment:
|
|
31
|
+
name: pypi
|
|
32
|
+
url: https://pypi.org/project/seer-ai/
|
|
33
|
+
|
|
34
|
+
permissions:
|
|
35
|
+
id-token: write # required for Trusted Publishing (OIDC)
|
|
36
|
+
|
|
37
|
+
steps:
|
|
38
|
+
- name: Download dist artifacts
|
|
39
|
+
uses: actions/download-artifact@v4
|
|
40
|
+
with:
|
|
41
|
+
name: dist
|
|
42
|
+
path: dist/
|
|
43
|
+
|
|
44
|
+
- name: Publish to PyPI
|
|
45
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
seer_ai-1.0.0/.gitignore
ADDED
seer_ai-1.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: seer-ai
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: SEER - Shell Enhanced Execution & Reasoning
|
|
5
|
+
Project-URL: Homepage, https://github.com/zeddius1983/seer
|
|
6
|
+
Project-URL: Repository, https://github.com/zeddius1983/seer
|
|
7
|
+
Project-URL: Issues, https://github.com/zeddius1983/seer/issues
|
|
8
|
+
License: MIT
|
|
9
|
+
Keywords: ai,assistant,llm,shell,terminal
|
|
10
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
11
|
+
Classifier: Environment :: Console
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Intended Audience :: System Administrators
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Topic :: System :: Shells
|
|
17
|
+
Classifier: Topic :: Utilities
|
|
18
|
+
Requires-Python: >=3.9
|
|
19
|
+
Requires-Dist: click>=8.0
|
|
20
|
+
Requires-Dist: httpx>=0.24
|
|
21
|
+
Requires-Dist: pyyaml>=6.0
|
|
22
|
+
Requires-Dist: rich>=13.0
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
|
|
25
|
+
# SEER - Shell Enhanced Execution & Reasoning
|
|
26
|
+
|
|
27
|
+

|
|
28
|
+
|
|
29
|
+
LLM-powered assistant for your terminal. Get contextual help from your local or cloud LLM based on what just happened in your shell — errors, failed commands, unexpected output.
|
|
30
|
+
|
|
31
|
+
Inspired by [PEEL](https://github.com/lemonade-sdk/peel) for PowerShell.
|
|
32
|
+
|
|
33
|
+
**Supported platforms:** macOS, Linux
|
|
34
|
+
**Supported shells:** zsh, bash
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
$ git pull-request
|
|
38
|
+
git: 'pull-request' is not a git command. See 'git --help'.
|
|
39
|
+
|
|
40
|
+
$ seer help
|
|
41
|
+
The command `git pull-request` is not valid. Use `git pull` to fetch and
|
|
42
|
+
merge, or install the `gh` CLI and run `gh pr create` to open a pull request.
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## How it works
|
|
48
|
+
|
|
49
|
+
Shell hooks (`PROMPT_COMMAND` / `precmd`) save your terminal's scrollback after every command. When you run `seer help`, the saved context is sent to your LLM of choice. No copy-pasting, no switching windows.
|
|
50
|
+
|
|
51
|
+
With tmux, the full screen output (including stderr) is captured. Without tmux, the last command and exit code are saved as fallback.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Installation
|
|
56
|
+
|
|
57
|
+
### Method 1: Installer (Recommended)
|
|
58
|
+
|
|
59
|
+
Run directly from GitHub — installs `seer`, sets up shell integration and implicit mode:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
curl -fsSL https://raw.githubusercontent.com/zeddius1983/seer/main/install.sh | bash
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
`uv` is installed automatically if not already present. To install a specific version or branch:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
# By version tag
|
|
69
|
+
curl -fsSL https://raw.githubusercontent.com/zeddius1983/seer/main/install.sh | bash -s -- --version v1.1.0
|
|
70
|
+
|
|
71
|
+
# By branch
|
|
72
|
+
curl -fsSL https://raw.githubusercontent.com/zeddius1983/seer/main/install.sh | bash -s -- --version feature/v1.1.0
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
`--version` accepts any git ref (tag, branch, or SHA). It can be combined with other flags:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
curl -fsSL https://raw.githubusercontent.com/zeddius1983/seer/main/install.sh | bash -s -- --version v1.1.0 --all
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
> **Note:** Whenever `~/.zshrc` is modified, a backup is created first as `~/.zshrc.YYYYMMDD_HHMMSS.bak`.
|
|
82
|
+
|
|
83
|
+
### Method 2: Build from source
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
git clone https://github.com/zeddius1983/seer
|
|
87
|
+
cd seer
|
|
88
|
+
uv tool install .
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Uninstallation
|
|
94
|
+
|
|
95
|
+
If you installed via the **installer** (Method 1):
|
|
96
|
+
```bash
|
|
97
|
+
curl -fsSL https://raw.githubusercontent.com/zeddius1983/seer/main/install.sh | bash -s -- --uninstall
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Usage
|
|
103
|
+
|
|
104
|
+
### Implicit Mode (Ctrl+Space)
|
|
105
|
+
|
|
106
|
+
Implicit mode is installed automatically with seer. Type any question directly into your terminal and press `Ctrl+Space`:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
find the largest file in this folder[Press Ctrl+Space]
|
|
110
|
+
# Instantly expands and runs: seer find the largest file in this folder
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Standard Commands
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
# Explain what just went wrong
|
|
117
|
+
seer help
|
|
118
|
+
|
|
119
|
+
# Ask anything shell-related
|
|
120
|
+
seer how to list all datasets in a ZFS pool
|
|
121
|
+
seer what does SIGKILL mean
|
|
122
|
+
seer how do I find which process is using port 8080
|
|
123
|
+
|
|
124
|
+
# Let seer do it — generates a command, shows it, asks before running
|
|
125
|
+
seer do find the largest file in ~/Downloads
|
|
126
|
+
seer do show disk usage by folder in /var
|
|
127
|
+
seer do list all listening ports
|
|
128
|
+
|
|
129
|
+
# Tip: quote the task if it contains apostrophes or special characters
|
|
130
|
+
seer do "show all files modified in the last week"
|
|
131
|
+
seer do "find the largest file and show it's size in MB"
|
|
132
|
+
|
|
133
|
+
# Pipe output directly (no shell hook needed)
|
|
134
|
+
kubectl get pods 2>&1 | seer
|
|
135
|
+
journalctl -xe | seer why is nginx failing
|
|
136
|
+
|
|
137
|
+
# Skip context, ask a clean question
|
|
138
|
+
seer --no-context explain the difference between hard and soft links
|
|
139
|
+
|
|
140
|
+
# Raw output — no glow or rich rendering
|
|
141
|
+
seer --raw how do I list open ports
|
|
142
|
+
seer -r help
|
|
143
|
+
|
|
144
|
+
# Use a specific provider or model for one query
|
|
145
|
+
seer -p anthropic help
|
|
146
|
+
seer -p openai -m gpt-4o how do I list listening ports
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Subcommands
|
|
150
|
+
|
|
151
|
+
| Command | Description |
|
|
152
|
+
|---|---|
|
|
153
|
+
| `seer help` | Analyse your last terminal output and explain errors |
|
|
154
|
+
| `seer do <task>` | Generate a shell command, preview it, confirm before running |
|
|
155
|
+
| `seer config` | Show the active config file, or create a default one |
|
|
156
|
+
| `seer --context` | Show the full system prompt and captured terminal context |
|
|
157
|
+
| `seer --stats` | Show provider, model, context size, and system info |
|
|
158
|
+
|
|
159
|
+
### Flags
|
|
160
|
+
|
|
161
|
+
| Flag | Short | Description |
|
|
162
|
+
|---|---|---|
|
|
163
|
+
| `--no-context` | | Skip attaching terminal context |
|
|
164
|
+
| `--raw` | `-r` | Disable glow and rich rendering, stream plain text |
|
|
165
|
+
| `--provider <name>` | `-p` | Override the active provider for this query |
|
|
166
|
+
| `--model <name>` | `-m` | Override the model for this query |
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Configuration
|
|
171
|
+
|
|
172
|
+
Generate the default config file:
|
|
173
|
+
```bash
|
|
174
|
+
seer config
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
This creates `~/.config/seer/config.yaml`:
|
|
178
|
+
|
|
179
|
+
```yaml
|
|
180
|
+
provider: lmstudio # active provider
|
|
181
|
+
|
|
182
|
+
providers:
|
|
183
|
+
lmstudio: # LM Studio (or any OpenAI-compatible local server)
|
|
184
|
+
type: openai
|
|
185
|
+
base_url: http://localhost:1234/v1
|
|
186
|
+
api_key: lmstudio
|
|
187
|
+
model: google/gemma-3-4b
|
|
188
|
+
|
|
189
|
+
ollama:
|
|
190
|
+
type: openai
|
|
191
|
+
base_url: http://localhost:11434/v1
|
|
192
|
+
api_key: ollama
|
|
193
|
+
model: llama3.2
|
|
194
|
+
|
|
195
|
+
openai:
|
|
196
|
+
type: openai
|
|
197
|
+
model: gpt-4o
|
|
198
|
+
api_key: sk-... # or set OPENAI_API_KEY env var
|
|
199
|
+
|
|
200
|
+
anthropic:
|
|
201
|
+
type: anthropic
|
|
202
|
+
model: claude-sonnet-4-6
|
|
203
|
+
api_key: sk-ant-... # or set ANTHROPIC_API_KEY env var
|
|
204
|
+
|
|
205
|
+
# Any OpenAI-compatible endpoint (vLLM, llama.cpp, etc.)
|
|
206
|
+
custom:
|
|
207
|
+
type: openai
|
|
208
|
+
base_url: http://myserver:8080/v1
|
|
209
|
+
api_key: none
|
|
210
|
+
model: my-model
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## Supported providers
|
|
216
|
+
|
|
217
|
+
| Provider | `type` | Notes |
|
|
218
|
+
|---|---|---|
|
|
219
|
+
| [LM Studio](https://lmstudio.ai) | `openai` | Default. Set `base_url: http://localhost:1234/v1` |
|
|
220
|
+
| [Ollama](https://ollama.com) | `openai` | Set `base_url: http://localhost:11434/v1` |
|
|
221
|
+
| [vLLM](https://github.com/vllm-project/vllm) | `openai` | Set `base_url: http://localhost:8000/v1` |
|
|
222
|
+
| [llama.cpp](https://github.com/ggerganov/llama.cpp) | `openai` | Set `base_url: http://localhost:8080/v1` |
|
|
223
|
+
| [OpenAI](https://platform.openai.com) | `openai` | Set `OPENAI_API_KEY` |
|
|
224
|
+
| [Anthropic](https://anthropic.com) | `anthropic` | Set `ANTHROPIC_API_KEY` |
|
|
225
|
+
| Any OpenAI-compatible endpoint | `openai` | Set `base_url` to your server |
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## Development
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
git clone https://github.com/zeddius1983/seer
|
|
233
|
+
cd seer
|
|
234
|
+
|
|
235
|
+
# Install dev environment
|
|
236
|
+
uv sync
|
|
237
|
+
|
|
238
|
+
# Run directly without installing
|
|
239
|
+
.venv/bin/seer --help
|
|
240
|
+
|
|
241
|
+
# Build a wheel
|
|
242
|
+
uv build
|
|
243
|
+
# → dist/seer-1.0.0-py3-none-any.whl
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
|
seer_ai-1.0.0/README.md
ADDED
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
# SEER - Shell Enhanced Execution & Reasoning
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
LLM-powered assistant for your terminal. Get contextual help from your local or cloud LLM based on what just happened in your shell — errors, failed commands, unexpected output.
|
|
6
|
+
|
|
7
|
+
Inspired by [PEEL](https://github.com/lemonade-sdk/peel) for PowerShell.
|
|
8
|
+
|
|
9
|
+
**Supported platforms:** macOS, Linux
|
|
10
|
+
**Supported shells:** zsh, bash
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
$ git pull-request
|
|
14
|
+
git: 'pull-request' is not a git command. See 'git --help'.
|
|
15
|
+
|
|
16
|
+
$ seer help
|
|
17
|
+
The command `git pull-request` is not valid. Use `git pull` to fetch and
|
|
18
|
+
merge, or install the `gh` CLI and run `gh pr create` to open a pull request.
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## How it works
|
|
24
|
+
|
|
25
|
+
Shell hooks (`PROMPT_COMMAND` / `precmd`) save your terminal's scrollback after every command. When you run `seer help`, the saved context is sent to your LLM of choice. No copy-pasting, no switching windows.
|
|
26
|
+
|
|
27
|
+
With tmux, the full screen output (including stderr) is captured. Without tmux, the last command and exit code are saved as fallback.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Installation
|
|
32
|
+
|
|
33
|
+
### Method 1: Installer (Recommended)
|
|
34
|
+
|
|
35
|
+
Run directly from GitHub — installs `seer`, sets up shell integration and implicit mode:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
curl -fsSL https://raw.githubusercontent.com/zeddius1983/seer/main/install.sh | bash
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
`uv` is installed automatically if not already present. To install a specific version or branch:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# By version tag
|
|
45
|
+
curl -fsSL https://raw.githubusercontent.com/zeddius1983/seer/main/install.sh | bash -s -- --version v1.1.0
|
|
46
|
+
|
|
47
|
+
# By branch
|
|
48
|
+
curl -fsSL https://raw.githubusercontent.com/zeddius1983/seer/main/install.sh | bash -s -- --version feature/v1.1.0
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
`--version` accepts any git ref (tag, branch, or SHA). It can be combined with other flags:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
curl -fsSL https://raw.githubusercontent.com/zeddius1983/seer/main/install.sh | bash -s -- --version v1.1.0 --all
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
> **Note:** Whenever `~/.zshrc` is modified, a backup is created first as `~/.zshrc.YYYYMMDD_HHMMSS.bak`.
|
|
58
|
+
|
|
59
|
+
### Method 2: Build from source
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
git clone https://github.com/zeddius1983/seer
|
|
63
|
+
cd seer
|
|
64
|
+
uv tool install .
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Uninstallation
|
|
70
|
+
|
|
71
|
+
If you installed via the **installer** (Method 1):
|
|
72
|
+
```bash
|
|
73
|
+
curl -fsSL https://raw.githubusercontent.com/zeddius1983/seer/main/install.sh | bash -s -- --uninstall
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Usage
|
|
79
|
+
|
|
80
|
+
### Implicit Mode (Ctrl+Space)
|
|
81
|
+
|
|
82
|
+
Implicit mode is installed automatically with seer. Type any question directly into your terminal and press `Ctrl+Space`:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
find the largest file in this folder[Press Ctrl+Space]
|
|
86
|
+
# Instantly expands and runs: seer find the largest file in this folder
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Standard Commands
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
# Explain what just went wrong
|
|
93
|
+
seer help
|
|
94
|
+
|
|
95
|
+
# Ask anything shell-related
|
|
96
|
+
seer how to list all datasets in a ZFS pool
|
|
97
|
+
seer what does SIGKILL mean
|
|
98
|
+
seer how do I find which process is using port 8080
|
|
99
|
+
|
|
100
|
+
# Let seer do it — generates a command, shows it, asks before running
|
|
101
|
+
seer do find the largest file in ~/Downloads
|
|
102
|
+
seer do show disk usage by folder in /var
|
|
103
|
+
seer do list all listening ports
|
|
104
|
+
|
|
105
|
+
# Tip: quote the task if it contains apostrophes or special characters
|
|
106
|
+
seer do "show all files modified in the last week"
|
|
107
|
+
seer do "find the largest file and show it's size in MB"
|
|
108
|
+
|
|
109
|
+
# Pipe output directly (no shell hook needed)
|
|
110
|
+
kubectl get pods 2>&1 | seer
|
|
111
|
+
journalctl -xe | seer why is nginx failing
|
|
112
|
+
|
|
113
|
+
# Skip context, ask a clean question
|
|
114
|
+
seer --no-context explain the difference between hard and soft links
|
|
115
|
+
|
|
116
|
+
# Raw output — no glow or rich rendering
|
|
117
|
+
seer --raw how do I list open ports
|
|
118
|
+
seer -r help
|
|
119
|
+
|
|
120
|
+
# Use a specific provider or model for one query
|
|
121
|
+
seer -p anthropic help
|
|
122
|
+
seer -p openai -m gpt-4o how do I list listening ports
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Subcommands
|
|
126
|
+
|
|
127
|
+
| Command | Description |
|
|
128
|
+
|---|---|
|
|
129
|
+
| `seer help` | Analyse your last terminal output and explain errors |
|
|
130
|
+
| `seer do <task>` | Generate a shell command, preview it, confirm before running |
|
|
131
|
+
| `seer config` | Show the active config file, or create a default one |
|
|
132
|
+
| `seer --context` | Show the full system prompt and captured terminal context |
|
|
133
|
+
| `seer --stats` | Show provider, model, context size, and system info |
|
|
134
|
+
|
|
135
|
+
### Flags
|
|
136
|
+
|
|
137
|
+
| Flag | Short | Description |
|
|
138
|
+
|---|---|---|
|
|
139
|
+
| `--no-context` | | Skip attaching terminal context |
|
|
140
|
+
| `--raw` | `-r` | Disable glow and rich rendering, stream plain text |
|
|
141
|
+
| `--provider <name>` | `-p` | Override the active provider for this query |
|
|
142
|
+
| `--model <name>` | `-m` | Override the model for this query |
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## Configuration
|
|
147
|
+
|
|
148
|
+
Generate the default config file:
|
|
149
|
+
```bash
|
|
150
|
+
seer config
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
This creates `~/.config/seer/config.yaml`:
|
|
154
|
+
|
|
155
|
+
```yaml
|
|
156
|
+
provider: lmstudio # active provider
|
|
157
|
+
|
|
158
|
+
providers:
|
|
159
|
+
lmstudio: # LM Studio (or any OpenAI-compatible local server)
|
|
160
|
+
type: openai
|
|
161
|
+
base_url: http://localhost:1234/v1
|
|
162
|
+
api_key: lmstudio
|
|
163
|
+
model: google/gemma-3-4b
|
|
164
|
+
|
|
165
|
+
ollama:
|
|
166
|
+
type: openai
|
|
167
|
+
base_url: http://localhost:11434/v1
|
|
168
|
+
api_key: ollama
|
|
169
|
+
model: llama3.2
|
|
170
|
+
|
|
171
|
+
openai:
|
|
172
|
+
type: openai
|
|
173
|
+
model: gpt-4o
|
|
174
|
+
api_key: sk-... # or set OPENAI_API_KEY env var
|
|
175
|
+
|
|
176
|
+
anthropic:
|
|
177
|
+
type: anthropic
|
|
178
|
+
model: claude-sonnet-4-6
|
|
179
|
+
api_key: sk-ant-... # or set ANTHROPIC_API_KEY env var
|
|
180
|
+
|
|
181
|
+
# Any OpenAI-compatible endpoint (vLLM, llama.cpp, etc.)
|
|
182
|
+
custom:
|
|
183
|
+
type: openai
|
|
184
|
+
base_url: http://myserver:8080/v1
|
|
185
|
+
api_key: none
|
|
186
|
+
model: my-model
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## Supported providers
|
|
192
|
+
|
|
193
|
+
| Provider | `type` | Notes |
|
|
194
|
+
|---|---|---|
|
|
195
|
+
| [LM Studio](https://lmstudio.ai) | `openai` | Default. Set `base_url: http://localhost:1234/v1` |
|
|
196
|
+
| [Ollama](https://ollama.com) | `openai` | Set `base_url: http://localhost:11434/v1` |
|
|
197
|
+
| [vLLM](https://github.com/vllm-project/vllm) | `openai` | Set `base_url: http://localhost:8000/v1` |
|
|
198
|
+
| [llama.cpp](https://github.com/ggerganov/llama.cpp) | `openai` | Set `base_url: http://localhost:8080/v1` |
|
|
199
|
+
| [OpenAI](https://platform.openai.com) | `openai` | Set `OPENAI_API_KEY` |
|
|
200
|
+
| [Anthropic](https://anthropic.com) | `anthropic` | Set `ANTHROPIC_API_KEY` |
|
|
201
|
+
| Any OpenAI-compatible endpoint | `openai` | Set `base_url` to your server |
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## Development
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
git clone https://github.com/zeddius1983/seer
|
|
209
|
+
cd seer
|
|
210
|
+
|
|
211
|
+
# Install dev environment
|
|
212
|
+
uv sync
|
|
213
|
+
|
|
214
|
+
# Run directly without installing
|
|
215
|
+
.venv/bin/seer --help
|
|
216
|
+
|
|
217
|
+
# Build a wheel
|
|
218
|
+
uv build
|
|
219
|
+
# → dist/seer-1.0.0-py3-none-any.whl
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
|
seer_ai-1.0.0/ROADMAP.md
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# SEER Roadmap
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
## v1.0.0 — Initial Release ✅
|
|
6
|
+
|
|
7
|
+
**Shell Integration**
|
|
8
|
+
- zsh and bash support via shell hooks (`precmd` / `PROMPT_COMMAND`)
|
|
9
|
+
- Implicit mode: type a question at the prompt and press `Ctrl+Space` to invoke seer
|
|
10
|
+
- Installer script with automatic `uv` setup and shell integration
|
|
11
|
+
- Uninstall / setup menu
|
|
12
|
+
|
|
13
|
+
**Context Capture**
|
|
14
|
+
- tmux pane capture (full scrollback, takes priority)
|
|
15
|
+
- Hook-based fallback: last command + exit code
|
|
16
|
+
- Shell history fallback
|
|
17
|
+
- Piped input support (`cmd 2>&1 | seer`)
|
|
18
|
+
|
|
19
|
+
**Error Analysis Mode (`seer help`)**
|
|
20
|
+
- Automatic error detection from terminal context
|
|
21
|
+
- System info auto-population (OS, CPU arch, shell, package managers)
|
|
22
|
+
- Responses tailored to the user's platform
|
|
23
|
+
|
|
24
|
+
**Command Generation Mode (`seer do`)**
|
|
25
|
+
- Natural language → shell command with syntax highlighting
|
|
26
|
+
- Safety warnings for destructive or privileged commands
|
|
27
|
+
- macOS vs Linux compatibility warnings
|
|
28
|
+
- Inline edit before execution (`e` key)
|
|
29
|
+
- Confirmation prompt (`[Y/n/e]`) before running
|
|
30
|
+
|
|
31
|
+
**Output Rendering**
|
|
32
|
+
- `glow` integration for rendered Markdown (host-side)
|
|
33
|
+
- `rich` Live streaming fallback
|
|
34
|
+
- `--raw` / `-r` flag for plain text output
|
|
35
|
+
|
|
36
|
+
**Multi-Provider Support**
|
|
37
|
+
- LM Studio (OpenAI-compatible, local)
|
|
38
|
+
- Ollama (OpenAI-compatible, local)
|
|
39
|
+
- OpenAI
|
|
40
|
+
- Anthropic
|
|
41
|
+
- Custom OpenAI-compatible endpoints
|
|
42
|
+
|
|
43
|
+
**Diagnostics**
|
|
44
|
+
- `seer info` — active provider, model, context stats, system specs
|
|
45
|
+
- `seer config` — print config path and contents
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## v1.1.0 — Provider Autoconfig 🔜
|
|
50
|
+
|
|
51
|
+
Introduce `auto` as a valid value for both `provider` and `model`, removing the need for manual configuration on machines running local LLM servers.
|
|
52
|
+
|
|
53
|
+
**`provider: auto`**
|
|
54
|
+
- At startup, probe each configured provider in order
|
|
55
|
+
- Select the first provider that responds successfully
|
|
56
|
+
- Probe method: attempt to list models via the provider's API
|
|
57
|
+
|
|
58
|
+
**`model: auto`**
|
|
59
|
+
- When a provider's model is set to `auto`, query its model list endpoint
|
|
60
|
+
- Select the first available model returned
|
|
61
|
+
|
|
62
|
+
**Updated default config**
|
|
63
|
+
- Ships with llama.cpp, LM Studio, and Ollama pre-configured
|
|
64
|
+
- All three default to `model: auto`
|
|
65
|
+
- Top-level `provider` defaults to `auto`
|
|
66
|
+
|
|
67
|
+
```yaml
|
|
68
|
+
provider: auto
|
|
69
|
+
context_lines: 100
|
|
70
|
+
providers:
|
|
71
|
+
llamacpp:
|
|
72
|
+
type: openai
|
|
73
|
+
base_url: http://127.0.0.1:8080/v1
|
|
74
|
+
api_key: llamacpp
|
|
75
|
+
model: auto
|
|
76
|
+
lmstudio:
|
|
77
|
+
type: openai
|
|
78
|
+
base_url: http://127.0.0.1:1234/v1
|
|
79
|
+
api_key: lmstudio
|
|
80
|
+
model: auto
|
|
81
|
+
ollama:
|
|
82
|
+
type: openai
|
|
83
|
+
base_url: http://localhost:11434/v1
|
|
84
|
+
api_key: ollama
|
|
85
|
+
model: auto
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## v1.2.0 — Brave Mode & Pipe-Aware Output 🔜
|
|
91
|
+
|
|
92
|
+
### Brave Mode
|
|
93
|
+
|
|
94
|
+
An autonomous execution mode where seer plans the necessary commands, runs them, and returns an interpreted result — rather than suggesting a command for the user to run manually.
|
|
95
|
+
|
|
96
|
+
**Example:** `seer find the largest file here` → seer runs `find` + `du` + `sort`, captures output, and responds with a human-readable answer.
|
|
97
|
+
|
|
98
|
+
**Mode system**
|
|
99
|
+
|
|
100
|
+
A new top-level `mode` config key controls the default behaviour:
|
|
101
|
+
|
|
102
|
+
| Value | Behaviour |
|
|
103
|
+
|---|---|
|
|
104
|
+
| `default` | Current behaviour — suggest commands, never execute autonomously |
|
|
105
|
+
| `brave` | Always use brave mode — plan, execute, interpret |
|
|
106
|
+
| `auto` | seer infers the desired mode from the query (e.g. questions → brave, `do`-style tasks → default) |
|
|
107
|
+
|
|
108
|
+
```yaml
|
|
109
|
+
mode: auto # default | brave | auto
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**Per-invocation override**
|
|
113
|
+
|
|
114
|
+
`--brave` / `-b` flag forces brave mode for a single query regardless of config:
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
seer --brave find the largest file here
|
|
118
|
+
seer -b what is eating my disk space
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**Execution model**
|
|
122
|
+
- LLM receives the query and generates a plan (sequence of shell commands)
|
|
123
|
+
- seer executes each command and feeds stdout/stderr back to the LLM
|
|
124
|
+
- Before any write or destructive command, seer pauses and prompts for confirmation (`[Y/n/e]`)
|
|
125
|
+
- Read-only commands run without interruption
|
|
126
|
+
- LLM produces a final human-readable summary
|
|
127
|
+
- `--raw` / `-r` outputs plain text (no Markdown formatting)
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
### Pipe-Aware Output
|
|
132
|
+
|
|
133
|
+
When seer's stdout is not a TTY (i.e. the output is being piped), automatically switch to plain text mode:
|
|
134
|
+
- Disable glow and rich rendering
|
|
135
|
+
- Instruct the LLM to respond with factual, unformatted output suitable for further processing
|
|
136
|
+
- Applies to all modes, including brave mode
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
seer what docker containers are running | grep local
|
|
140
|
+
seer --brave find the largest log file | xargs wc -l
|
|
141
|
+
```
|