vibecode 0.0.1
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.
- checksums.yaml +7 -0
- data/.gitignore +33 -0
- data/CHANGELOG.md +5 -0
- data/Gemfile +10 -0
- data/Gemfile.lock +56 -0
- data/LICENSE.txt +21 -0
- data/README.md +245 -0
- data/Rakefile +8 -0
- data/bin/console +11 -0
- data/bin/setup +8 -0
- data/exe/vibecode +4 -0
- data/lib/vibecode/agent.rb +365 -0
- data/lib/vibecode/cli.rb +148 -0
- data/lib/vibecode/git.rb +141 -0
- data/lib/vibecode/ollama_client.rb +111 -0
- data/lib/vibecode/version.rb +5 -0
- data/lib/vibecode/workspace.rb +225 -0
- data/lib/vibecode.rb +13 -0
- data/sig/vibecode.rbs +4 -0
- data/test/test_helper.rb +6 -0
- data/test/test_vibecode.rb +13 -0
- data/vibecode.gemspec +39 -0
- metadata +140 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 67b457d6b47865f6c66f355bb323d6540ec2a7610629cbc930e8633fdb08a262
|
|
4
|
+
data.tar.gz: bada201bbd50182d4f047e66e6421a96f189907b51d2116545325793237414cc
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 7e0903ba7b4ba6498469de22a6bdbe95caa0449f1fa7fc1169a8a71ef0e011bd848fcf53c3ff8583dffb4f30ff40fdb286e3759f90b34c91736cdba616465754
|
|
7
|
+
data.tar.gz: 50d556a5e712d67f1279057cca0e79d889b20f0ca508b73e4f82b8cbab992d73f1e9b77889d1761e5a429a1954cb618a86a77a7338e87b52dec7251dd1ae9bce
|
data/.gitignore
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Bundler
|
|
2
|
+
/.bundle/
|
|
3
|
+
|
|
4
|
+
# Yard docs
|
|
5
|
+
/.yardoc
|
|
6
|
+
/_yardoc/
|
|
7
|
+
/doc/
|
|
8
|
+
|
|
9
|
+
# Coverage
|
|
10
|
+
/coverage/
|
|
11
|
+
|
|
12
|
+
# Build artifacts
|
|
13
|
+
/pkg/
|
|
14
|
+
|
|
15
|
+
# Test reports
|
|
16
|
+
/spec/reports/
|
|
17
|
+
|
|
18
|
+
# Temp files
|
|
19
|
+
/tmp/
|
|
20
|
+
|
|
21
|
+
# macOS
|
|
22
|
+
.DS_Store
|
|
23
|
+
|
|
24
|
+
# Vim / editors
|
|
25
|
+
*.swp
|
|
26
|
+
*.swo
|
|
27
|
+
|
|
28
|
+
# Logs
|
|
29
|
+
*.log
|
|
30
|
+
|
|
31
|
+
.vibecode/
|
|
32
|
+
config.json
|
|
33
|
+
|
data/CHANGELOG.md
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
vibecode (0.1.0)
|
|
5
|
+
diffy
|
|
6
|
+
httparty
|
|
7
|
+
json
|
|
8
|
+
open3
|
|
9
|
+
pastel
|
|
10
|
+
tty-prompt
|
|
11
|
+
tty-spinner
|
|
12
|
+
|
|
13
|
+
GEM
|
|
14
|
+
remote: https://rubygems.org/
|
|
15
|
+
specs:
|
|
16
|
+
bigdecimal (4.0.1)
|
|
17
|
+
csv (3.3.5)
|
|
18
|
+
diffy (3.4.4)
|
|
19
|
+
httparty (0.24.2)
|
|
20
|
+
csv
|
|
21
|
+
mini_mime (>= 1.0.0)
|
|
22
|
+
multi_xml (>= 0.5.2)
|
|
23
|
+
json (2.18.0)
|
|
24
|
+
mini_mime (1.1.5)
|
|
25
|
+
minitest (5.27.0)
|
|
26
|
+
multi_xml (0.8.1)
|
|
27
|
+
bigdecimal (>= 3.1, < 5)
|
|
28
|
+
open3 (0.2.1)
|
|
29
|
+
pastel (0.8.0)
|
|
30
|
+
tty-color (~> 0.5)
|
|
31
|
+
rake (13.3.1)
|
|
32
|
+
tty-color (0.6.0)
|
|
33
|
+
tty-cursor (0.7.1)
|
|
34
|
+
tty-prompt (0.23.1)
|
|
35
|
+
pastel (~> 0.8)
|
|
36
|
+
tty-reader (~> 0.8)
|
|
37
|
+
tty-reader (0.9.0)
|
|
38
|
+
tty-cursor (~> 0.7)
|
|
39
|
+
tty-screen (~> 0.8)
|
|
40
|
+
wisper (~> 2.0)
|
|
41
|
+
tty-screen (0.8.2)
|
|
42
|
+
tty-spinner (0.9.3)
|
|
43
|
+
tty-cursor (~> 0.7)
|
|
44
|
+
wisper (2.0.1)
|
|
45
|
+
|
|
46
|
+
PLATFORMS
|
|
47
|
+
arm64-darwin-25
|
|
48
|
+
ruby
|
|
49
|
+
|
|
50
|
+
DEPENDENCIES
|
|
51
|
+
minitest (~> 5.16)
|
|
52
|
+
rake (~> 13.0)
|
|
53
|
+
vibecode!
|
|
54
|
+
|
|
55
|
+
BUNDLED WITH
|
|
56
|
+
2.5.23
|
data/LICENSE.txt
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Kurt Tamulonis
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
# Vibecode
|
|
2
|
+
|
|
3
|
+
**Vibecode** is a terminal-based AI coding agent powered by local LLMs through [Ollama](https://ollama.com). It can read your project files, propose edits with diffs, and run Git commands โ all with your approval.
|
|
4
|
+
|
|
5
|
+
Think of it as a **local, open-source Codex-style coding assistant** that runs directly in your terminal.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## โจ Features
|
|
10
|
+
|
|
11
|
+
* ๐ง Uses local coding models via Ollama
|
|
12
|
+
* ๐ Reads and understands your current project directory
|
|
13
|
+
* โ๏ธ Proposes file edits with colorized diffs
|
|
14
|
+
* ๐ Asks before modifying files or running Git commands
|
|
15
|
+
* ๐ฟ Git-aware (status, branches, commits, push, etc.)
|
|
16
|
+
* ๐ Switch models anytime
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## ๐งฐ Requirements
|
|
21
|
+
|
|
22
|
+
Before installing Vibecode, make sure you have:
|
|
23
|
+
|
|
24
|
+
* **Ruby 3.0+**
|
|
25
|
+
* **Bundler**
|
|
26
|
+
* **Git**
|
|
27
|
+
* **Ollama** installed and working
|
|
28
|
+
|
|
29
|
+
Install Ollama from:
|
|
30
|
+
|
|
31
|
+
๐ [https://ollama.com/download](https://ollama.com/download)
|
|
32
|
+
|
|
33
|
+
Start the Ollama server:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
ollama serve
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## ๐ Local Installation (Development Mode)
|
|
42
|
+
|
|
43
|
+
From the Vibecode project directory:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
bundle install
|
|
47
|
+
chmod +x exe/vibecode
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Run directly without installing the gem:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
bundle exec exe/vibecode
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## ๐ฆ Install as a Local Gem
|
|
59
|
+
|
|
60
|
+
From the project root:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
gem build vibecode.gemspec
|
|
64
|
+
gem install ./vibecode-*.gem
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Then you can run from anywhere:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
vibecode
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## ๐ฉบ System Check
|
|
76
|
+
|
|
77
|
+
Verify everything is connected properly:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
vibecode -doctor
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
You should see:
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
Ollama installed OK
|
|
87
|
+
Ollama server running OK
|
|
88
|
+
Git installed OK
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## ๐ค Managing Models
|
|
94
|
+
|
|
95
|
+
### List installed models
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
vibecode -list
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Use a model (auto-pulls if missing)
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
vibecode -use qwen2.5-coder:7b
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Manually pull a model
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
vibecode -pull deepseek-coder:6.7b
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Your active model is stored in:
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
~/.vibecode/config.json
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## ๐ฌ Starting an AI Coding Session
|
|
122
|
+
|
|
123
|
+
From any project directory:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
vibecode
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
You will see:
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
Vibecode Agent using model: qwen2.5-coder:7b
|
|
133
|
+
vibecode>
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Now you can give natural language coding instructions.
|
|
137
|
+
|
|
138
|
+
Example:
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
vibecode> create a ruby method called greet that prints hello world
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## ๐ง How Vibecode Works
|
|
147
|
+
|
|
148
|
+
The AI responds using structured instructions that Vibecode turns into real actions.
|
|
149
|
+
|
|
150
|
+
### AI Can Request to Read Files
|
|
151
|
+
|
|
152
|
+
Vibecode will load the file and send contents back to the AI.
|
|
153
|
+
|
|
154
|
+
### AI Can Propose File Changes
|
|
155
|
+
|
|
156
|
+
You will see a **diff preview** before any file is modified.
|
|
157
|
+
|
|
158
|
+
You must approve changes before they are applied.
|
|
159
|
+
|
|
160
|
+
### AI Can Suggest Git Commands
|
|
161
|
+
|
|
162
|
+
Examples:
|
|
163
|
+
|
|
164
|
+
* `git status`
|
|
165
|
+
* `git checkout -b feature/login`
|
|
166
|
+
* `git add .`
|
|
167
|
+
* `git commit -m "Add login feature"`
|
|
168
|
+
* `git push origin feature/login`
|
|
169
|
+
|
|
170
|
+
You must approve each command before it runs.
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## ๐ Safety Model
|
|
175
|
+
|
|
176
|
+
Vibecode is **human-in-the-loop by default**.
|
|
177
|
+
|
|
178
|
+
| Action | Requires Approval |
|
|
179
|
+
| -------------------- | ----------------- |
|
|
180
|
+
| Reading files | โ |
|
|
181
|
+
| Editing files | โ
|
|
|
182
|
+
| Running Git commands | โ
|
|
|
183
|
+
| Pushing to remote | โ
|
|
|
184
|
+
|
|
185
|
+
Vibecode **cannot access files outside your current directory**.
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## ๐ Project Awareness
|
|
190
|
+
|
|
191
|
+
Each time you prompt Vibecode, it automatically sends the AI:
|
|
192
|
+
|
|
193
|
+
* Your project file tree
|
|
194
|
+
* Relevant file contents (when needed)
|
|
195
|
+
* Conversation history
|
|
196
|
+
|
|
197
|
+
This allows the AI to reason about your codebase like a real assistant.
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## ๐ Internal Architecture (For Contributors)
|
|
202
|
+
|
|
203
|
+
| Component | Responsibility |
|
|
204
|
+
| -------------- | ---------------------------------------- |
|
|
205
|
+
| `CLI` | Handles commands and interactive session |
|
|
206
|
+
| `OllamaClient` | Talks to Ollama HTTP API |
|
|
207
|
+
| `Agent` | AI reasoning loop + instruction parsing |
|
|
208
|
+
| `Workspace` | Safe file reading/writing with diffs |
|
|
209
|
+
| `Git` | Safe Git command execution |
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## ๐งช Example Workflow
|
|
214
|
+
|
|
215
|
+
1. Start Vibecode in your repo
|
|
216
|
+
2. Ask for a feature
|
|
217
|
+
3. Vibecode proposes edits
|
|
218
|
+
4. You approve
|
|
219
|
+
5. Vibecode runs Git commands
|
|
220
|
+
6. You review and push
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
## ๐งญ Roadmap Ideas
|
|
225
|
+
|
|
226
|
+
* Streaming model responses
|
|
227
|
+
* Auto-approve mode
|
|
228
|
+
* Test runner integration
|
|
229
|
+
* Linter auto-fix mode
|
|
230
|
+
* Pull request description generator
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## โค๏ธ Philosophy
|
|
235
|
+
|
|
236
|
+
Vibecode keeps your code and AI **local, private, and developer-controlled**.
|
|
237
|
+
|
|
238
|
+
No cloud. No tracking. Just you and your AI pair programmer in the terminal.
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## ๐ License
|
|
243
|
+
|
|
244
|
+
MIT License
|
|
245
|
+
|
data/Rakefile
ADDED
data/bin/console
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require "bundler/setup"
|
|
5
|
+
require "vibecode"
|
|
6
|
+
|
|
7
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
|
8
|
+
# with your gem easier. You can also use a different console, if you like.
|
|
9
|
+
|
|
10
|
+
require "irb"
|
|
11
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
data/exe/vibecode
ADDED