livepilot 1.1.0
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.
- package/.claude/settings.local.json +10 -0
- package/.mcpregistry_github_token +1 -0
- package/.mcpregistry_registry_token +1 -0
- package/.playwright-mcp/console-2026-03-17T15-47-29-021Z.log +10 -0
- package/.playwright-mcp/console-2026-03-17T15-51-09-247Z.log +10 -0
- package/.playwright-mcp/console-2026-03-17T15-52-22-831Z.log +12 -0
- package/.playwright-mcp/console-2026-03-17T15-52-29-709Z.log +10 -0
- package/.playwright-mcp/console-2026-03-17T15-53-20-147Z.log +1 -0
- package/.playwright-mcp/glama-snapshot.md +2140 -0
- package/.playwright-mcp/page-2026-03-17T15-49-02-625Z.png +0 -0
- package/.playwright-mcp/page-2026-03-17T15-52-15-149Z.png +0 -0
- package/.playwright-mcp/page-2026-03-17T15-52-57-333Z.png +0 -0
- package/CHANGELOG.md +33 -0
- package/LICENSE +21 -0
- package/README.md +296 -0
- package/bin/livepilot.js +376 -0
- package/installer/install.js +95 -0
- package/installer/paths.js +79 -0
- package/mcp_server/__init__.py +2 -0
- package/mcp_server/__main__.py +5 -0
- package/mcp_server/connection.py +207 -0
- package/mcp_server/server.py +40 -0
- package/mcp_server/tools/__init__.py +1 -0
- package/mcp_server/tools/arrangement.py +399 -0
- package/mcp_server/tools/browser.py +78 -0
- package/mcp_server/tools/clips.py +187 -0
- package/mcp_server/tools/devices.py +238 -0
- package/mcp_server/tools/mixing.py +113 -0
- package/mcp_server/tools/notes.py +266 -0
- package/mcp_server/tools/scenes.py +63 -0
- package/mcp_server/tools/tracks.py +148 -0
- package/mcp_server/tools/transport.py +113 -0
- package/package.json +38 -0
- package/plugin/.mcp.json +8 -0
- package/plugin/agents/livepilot-producer/AGENT.md +61 -0
- package/plugin/commands/beat.md +18 -0
- package/plugin/commands/mix.md +15 -0
- package/plugin/commands/session.md +13 -0
- package/plugin/commands/sounddesign.md +16 -0
- package/plugin/plugin.json +18 -0
- package/plugin/skills/livepilot-core/SKILL.md +160 -0
- package/plugin/skills/livepilot-core/references/ableton-workflow-patterns.md +831 -0
- package/plugin/skills/livepilot-core/references/m4l-devices.md +352 -0
- package/plugin/skills/livepilot-core/references/midi-recipes.md +402 -0
- package/plugin/skills/livepilot-core/references/mixing-patterns.md +578 -0
- package/plugin/skills/livepilot-core/references/overview.md +191 -0
- package/plugin/skills/livepilot-core/references/sound-design.md +392 -0
- package/remote_script/LivePilot/__init__.py +42 -0
- package/remote_script/LivePilot/arrangement.py +678 -0
- package/remote_script/LivePilot/browser.py +325 -0
- package/remote_script/LivePilot/clips.py +172 -0
- package/remote_script/LivePilot/devices.py +466 -0
- package/remote_script/LivePilot/diagnostics.py +198 -0
- package/remote_script/LivePilot/mixing.py +194 -0
- package/remote_script/LivePilot/notes.py +339 -0
- package/remote_script/LivePilot/router.py +74 -0
- package/remote_script/LivePilot/scenes.py +75 -0
- package/remote_script/LivePilot/server.py +286 -0
- package/remote_script/LivePilot/tracks.py +229 -0
- package/remote_script/LivePilot/transport.py +147 -0
- package/remote_script/LivePilot/utils.py +112 -0
- package/requirements.txt +2 -0
- package/server.json +20 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 1.1.0 — 2026-03-17
|
|
4
|
+
|
|
5
|
+
### New Tools (+7)
|
|
6
|
+
- **`back_to_arranger`** — switch playback from session clips back to arrangement timeline
|
|
7
|
+
- **`get_arrangement_notes`** — read MIDI notes from arrangement clips
|
|
8
|
+
- **`remove_arrangement_notes`** — remove notes in a region of an arrangement clip
|
|
9
|
+
- **`remove_arrangement_notes_by_id`** — remove specific notes by ID
|
|
10
|
+
- **`modify_arrangement_notes`** — modify notes by ID (pitch, time, velocity, probability)
|
|
11
|
+
- **`duplicate_arrangement_notes`** — copy notes by ID with optional time offset
|
|
12
|
+
- **`get_device_presets`** — list presets for any device (audio effects, instruments, MIDI effects)
|
|
13
|
+
|
|
14
|
+
### Fixes
|
|
15
|
+
- Fixed arrangement tools test coverage (was missing 5 tools from expected set)
|
|
16
|
+
- Synchronized tool count across all documentation (was 80/81/84, now consistently 91)
|
|
17
|
+
|
|
18
|
+
## 1.0.0 — 2026-03-17
|
|
19
|
+
|
|
20
|
+
Initial release.
|
|
21
|
+
|
|
22
|
+
### Features
|
|
23
|
+
- **84 MCP tools** across 9 domains: transport, tracks, clips, notes, devices, scenes, mixing, browser, arrangement
|
|
24
|
+
- **Remote Script** for Ableton Live 12 with thread-safe command queue via `schedule_message`
|
|
25
|
+
- **MCP Server** (FastMCP) with input validation, auto-reconnect, and structured error messages
|
|
26
|
+
- **CLI** (`npx livepilot`) with `--install`, `--uninstall`, `--status`, `--doctor`, `--version`
|
|
27
|
+
- **Claude Code Plugin** with:
|
|
28
|
+
- `livepilot-core` skill — core discipline and workflow guides
|
|
29
|
+
- `livepilot-producer` agent — autonomous production from high-level descriptions
|
|
30
|
+
- 4 slash commands: `/session`, `/beat`, `/mix`, `/sounddesign`
|
|
31
|
+
- **Installer** with auto-detection of Ableton paths on macOS and Windows
|
|
32
|
+
- **Live 12 modern note API** support: note IDs, probability, velocity_deviation
|
|
33
|
+
- **JSON over TCP** protocol on port 9878 with structured error codes
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Pilot Studio
|
|
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 all
|
|
13
|
+
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 THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
```
|
|
2
|
+
██╗ ██╗██╗ ██╗███████╗██████╗ ██╗██╗ ██████╗ ████████╗
|
|
3
|
+
██║ ██║██║ ██║██╔════╝██╔══██╗██║██║ ██╔═══██╗╚══██╔══╝
|
|
4
|
+
██║ ██║██║ ██║█████╗ ██████╔╝██║██║ ██║ ██║ ██║
|
|
5
|
+
██║ ██║╚██╗ ██╔╝██╔══╝ ██╔═══╝ ██║██║ ██║ ██║ ██║
|
|
6
|
+
███████╗██║ ╚████╔╝ ███████╗██║ ██║███████╗╚██████╔╝ ██║
|
|
7
|
+
╚══════╝╚═╝ ╚═══╝ ╚══════╝╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═╝
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
[](LICENSE)
|
|
11
|
+
[](https://github.com/dreamrec/LivePilot/actions/workflows/ci.yml)
|
|
12
|
+
[](https://github.com/dreamrec/LivePilot/stargazers)
|
|
13
|
+
|
|
14
|
+
**AI copilot for Ableton Live 12** — 91 MCP tools for real-time music production, sound design, and mixing.
|
|
15
|
+
|
|
16
|
+
Control your entire Ableton session through natural language. Create tracks, program MIDI, load instruments, tweak parameters, arrange songs, and mix — all without leaving the keyboard.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## What You Can Do
|
|
21
|
+
|
|
22
|
+
- **Produce** — Create tracks, load instruments, program drum patterns, bass lines, chord progressions, and melodies
|
|
23
|
+
- **Arrange** — Build full song structures in arrangement view with MIDI note editing, cue points, and timeline navigation
|
|
24
|
+
- **Design sounds** — Browse Ableton's library, load presets, tweak device parameters, chain effects
|
|
25
|
+
- **Mix** — Set levels, panning, sends, and routing. Run diagnostics to catch silent tracks and mute leftovers
|
|
26
|
+
- **Iterate fast** — Transpose, humanize, quantize, duplicate, and reshape patterns through conversation
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Quick Start
|
|
31
|
+
|
|
32
|
+
### 1. Install the Remote Script
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npx -y github:dreamrec/LivePilot --install
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### 2. Enable in Ableton
|
|
39
|
+
|
|
40
|
+
Restart Ableton Live, then go to **Preferences > Link, Tempo & MIDI > Control Surface** and select **LivePilot**.
|
|
41
|
+
|
|
42
|
+
### 3. Add to your MCP client
|
|
43
|
+
|
|
44
|
+
<details open>
|
|
45
|
+
<summary><strong>Claude Code</strong></summary>
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
claude mcp add LivePilot -- npx -y github:dreamrec/LivePilot
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Or add to `.mcp.json`:
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"mcpServers": {
|
|
56
|
+
"LivePilot": {
|
|
57
|
+
"command": "npx",
|
|
58
|
+
"args": ["-y", "github:dreamrec/LivePilot"]
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**Optional:** Install the Claude Code plugin for skills, slash commands, and the producer agent:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
claude plugin add github:dreamrec/LivePilot/plugin
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
</details>
|
|
71
|
+
|
|
72
|
+
<details>
|
|
73
|
+
<summary><strong>Claude Desktop</strong></summary>
|
|
74
|
+
|
|
75
|
+
Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
|
|
76
|
+
|
|
77
|
+
```json
|
|
78
|
+
{
|
|
79
|
+
"mcpServers": {
|
|
80
|
+
"LivePilot": {
|
|
81
|
+
"command": "npx",
|
|
82
|
+
"args": ["-y", "github:dreamrec/LivePilot"]
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Restart Claude Desktop after saving.
|
|
89
|
+
|
|
90
|
+
</details>
|
|
91
|
+
|
|
92
|
+
<details>
|
|
93
|
+
<summary><strong>Cursor</strong></summary>
|
|
94
|
+
|
|
95
|
+
Open Cursor Settings > MCP Servers > Add Server, then use:
|
|
96
|
+
|
|
97
|
+
- **Name:** LivePilot
|
|
98
|
+
- **Command:** `npx -y github:dreamrec/LivePilot`
|
|
99
|
+
|
|
100
|
+
Or add to `.cursor/mcp.json`:
|
|
101
|
+
|
|
102
|
+
```json
|
|
103
|
+
{
|
|
104
|
+
"mcpServers": {
|
|
105
|
+
"LivePilot": {
|
|
106
|
+
"command": "npx",
|
|
107
|
+
"args": ["-y", "github:dreamrec/LivePilot"]
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
</details>
|
|
114
|
+
|
|
115
|
+
<details>
|
|
116
|
+
<summary><strong>VS Code (Copilot)</strong></summary>
|
|
117
|
+
|
|
118
|
+
Add to `.vscode/mcp.json`:
|
|
119
|
+
|
|
120
|
+
```json
|
|
121
|
+
{
|
|
122
|
+
"servers": {
|
|
123
|
+
"LivePilot": {
|
|
124
|
+
"command": "npx",
|
|
125
|
+
"args": ["-y", "github:dreamrec/LivePilot"]
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
</details>
|
|
132
|
+
|
|
133
|
+
<details>
|
|
134
|
+
<summary><strong>Windsurf</strong></summary>
|
|
135
|
+
|
|
136
|
+
Add to `~/.codeium/windsurf/mcp_config.json`:
|
|
137
|
+
|
|
138
|
+
```json
|
|
139
|
+
{
|
|
140
|
+
"mcpServers": {
|
|
141
|
+
"LivePilot": {
|
|
142
|
+
"command": "npx",
|
|
143
|
+
"args": ["-y", "github:dreamrec/LivePilot"]
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
</details>
|
|
150
|
+
|
|
151
|
+
### 4. Verify connection
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
npx -y github:dreamrec/LivePilot --status
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## 91 Tools Across 9 Domains
|
|
160
|
+
|
|
161
|
+
| Domain | Tools | What you can do |
|
|
162
|
+
|--------|:-----:|-----------------|
|
|
163
|
+
| **Transport** | 12 | Play/stop, tempo, time signature, loop, undo/redo, metronome, diagnostics |
|
|
164
|
+
| **Tracks** | 12 | Create MIDI/audio/return tracks, name, color, mute, solo, arm |
|
|
165
|
+
| **Clips** | 10 | Create, delete, duplicate, fire, stop, loop settings, launch mode |
|
|
166
|
+
| **Notes** | 8 | Add/get/remove/modify MIDI notes, transpose, quantize, duplicate |
|
|
167
|
+
| **Devices** | 12 | Load instruments & effects, tweak parameters, rack chains, presets |
|
|
168
|
+
| **Scenes** | 6 | Create, delete, duplicate, fire, rename |
|
|
169
|
+
| **Mixing** | 8 | Volume, pan, sends, routing, return tracks, master |
|
|
170
|
+
| **Browser** | 4 | Search Ableton's library, browse categories, load presets |
|
|
171
|
+
| **Arrangement** | 19 | Create clips, full MIDI note CRUD, cue points, recording, automation |
|
|
172
|
+
|
|
173
|
+
<details>
|
|
174
|
+
<summary><strong>Full tool list</strong></summary>
|
|
175
|
+
|
|
176
|
+
### Transport (12)
|
|
177
|
+
`get_session_info` · `set_tempo` · `set_time_signature` · `start_playback` · `stop_playback` · `continue_playback` · `toggle_metronome` · `set_session_loop` · `undo` · `redo` · `get_recent_actions` · `get_session_diagnostics`
|
|
178
|
+
|
|
179
|
+
### Tracks (12)
|
|
180
|
+
`get_track_info` · `create_midi_track` · `create_audio_track` · `create_return_track` · `delete_track` · `duplicate_track` · `set_track_name` · `set_track_color` · `set_track_mute` · `set_track_solo` · `set_track_arm` · `stop_track_clips`
|
|
181
|
+
|
|
182
|
+
### Clips (10)
|
|
183
|
+
`get_clip_info` · `create_clip` · `delete_clip` · `duplicate_clip` · `fire_clip` · `stop_clip` · `set_clip_name` · `set_clip_color` · `set_clip_loop` · `set_clip_launch`
|
|
184
|
+
|
|
185
|
+
### Notes (8)
|
|
186
|
+
`add_notes` · `get_notes` · `remove_notes` · `remove_notes_by_id` · `modify_notes` · `duplicate_notes` · `transpose_notes` · `quantize_clip`
|
|
187
|
+
|
|
188
|
+
### Devices (12)
|
|
189
|
+
`get_device_info` · `get_device_parameters` · `set_device_parameter` · `batch_set_parameters` · `toggle_device` · `delete_device` · `load_device_by_uri` · `find_and_load_device` · `get_rack_chains` · `set_simpler_playback_mode` · `set_chain_volume` · `get_device_presets`
|
|
190
|
+
|
|
191
|
+
### Scenes (6)
|
|
192
|
+
`get_scenes_info` · `create_scene` · `delete_scene` · `duplicate_scene` · `fire_scene` · `set_scene_name`
|
|
193
|
+
|
|
194
|
+
### Mixing (8)
|
|
195
|
+
`set_track_volume` · `set_track_pan` · `set_track_send` · `get_return_tracks` · `get_master_track` · `set_master_volume` · `get_track_routing` · `set_track_routing`
|
|
196
|
+
|
|
197
|
+
### Browser (4)
|
|
198
|
+
`get_browser_tree` · `get_browser_items` · `search_browser` · `load_browser_item`
|
|
199
|
+
|
|
200
|
+
### Arrangement (19)
|
|
201
|
+
`get_arrangement_clips` · `create_arrangement_clip` · `add_arrangement_notes` · `get_arrangement_notes` · `remove_arrangement_notes` · `remove_arrangement_notes_by_id` · `modify_arrangement_notes` · `duplicate_arrangement_notes` · `transpose_arrangement_notes` · `set_arrangement_clip_name` · `set_arrangement_automation` · `back_to_arranger` · `jump_to_time` · `capture_midi` · `start_recording` · `stop_recording` · `get_cue_points` · `jump_to_cue` · `toggle_cue_point`
|
|
202
|
+
|
|
203
|
+
</details>
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## Claude Code Plugin
|
|
208
|
+
|
|
209
|
+
The plugin adds production-focused skills, slash commands, and an autonomous producer agent.
|
|
210
|
+
|
|
211
|
+
| Command | Description |
|
|
212
|
+
|---------|-------------|
|
|
213
|
+
| `/session` | Full session overview with diagnostics |
|
|
214
|
+
| `/beat` | Guided beat creation — genre, tempo, instrumentation |
|
|
215
|
+
| `/mix` | Mixing assistant — levels, panning, sends |
|
|
216
|
+
| `/sounddesign` | Sound design workflow — instruments, effects, presets |
|
|
217
|
+
|
|
218
|
+
**Producer Agent** — An autonomous agent that builds tracks from high-level descriptions like *"Make me a 126 BPM rominimal track in D minor with hypnotic percussion"*.
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## Architecture
|
|
223
|
+
|
|
224
|
+
```
|
|
225
|
+
Claude / AI Client
|
|
226
|
+
│ MCP Protocol (stdio)
|
|
227
|
+
▼
|
|
228
|
+
┌─────────────────────┐
|
|
229
|
+
│ MCP Server │ Python (FastMCP)
|
|
230
|
+
│ mcp_server/ │ Input validation, auto-reconnect
|
|
231
|
+
└────────┬────────────┘
|
|
232
|
+
│ JSON over TCP (port 9878)
|
|
233
|
+
▼
|
|
234
|
+
┌─────────────────────┐
|
|
235
|
+
│ Remote Script │ Runs inside Ableton's Python
|
|
236
|
+
│ remote_script/ │ Thread-safe command queue
|
|
237
|
+
│ LivePilot/ │ ControlSurface base class
|
|
238
|
+
└─────────────────────┘
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
Single-client TCP connection by design — Ableton's Live Object Model is not thread-safe.
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## Compatibility
|
|
246
|
+
|
|
247
|
+
| | Live 12 (all editions) | Suite only |
|
|
248
|
+
|---|:---:|:---:|
|
|
249
|
+
| Transport, tracks, clips, scenes, mixing | Yes | — |
|
|
250
|
+
| MIDI notes (add, modify, remove, probability) | Yes | — |
|
|
251
|
+
| Device parameters, effects, browser | Yes | — |
|
|
252
|
+
| Arrangement (clips, notes, cue points) | Yes | — |
|
|
253
|
+
| Stock instruments (Drift, Meld, Wavetable) | — | Yes |
|
|
254
|
+
| Max for Live devices | — | Yes |
|
|
255
|
+
| Third-party VST/AU plugins | Yes | — |
|
|
256
|
+
|
|
257
|
+
**Requirements:** Ableton Live 12 · Python 3.10+ · Node.js 18+
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
## CLI
|
|
262
|
+
|
|
263
|
+
```bash
|
|
264
|
+
npx livepilot # Start MCP server (stdio)
|
|
265
|
+
npx livepilot --install # Install Remote Script
|
|
266
|
+
npx livepilot --uninstall # Remove Remote Script
|
|
267
|
+
npx livepilot --status # Check Ableton connection
|
|
268
|
+
npx livepilot --doctor # Full diagnostic check
|
|
269
|
+
npx livepilot --version # Show version
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
## Documentation
|
|
275
|
+
|
|
276
|
+
**[Read the full manual](docs/manual/index.md)** — Getting started, tool reference, production workflows, MIDI programming, sound design, mixing, and troubleshooting.
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## Development
|
|
281
|
+
|
|
282
|
+
```bash
|
|
283
|
+
git clone https://github.com/dreamrec/LivePilot.git
|
|
284
|
+
cd LivePilot
|
|
285
|
+
python3 -m venv .venv
|
|
286
|
+
.venv/bin/pip install -r requirements.txt
|
|
287
|
+
.venv/bin/pytest tests/ -v
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
## Contributing
|
|
291
|
+
|
|
292
|
+
Contributions welcome. Please [open an issue](https://github.com/dreamrec/LivePilot/issues) first to discuss what you'd like to change.
|
|
293
|
+
|
|
294
|
+
## License
|
|
295
|
+
|
|
296
|
+
[MIT](LICENSE) — Pilot Studio
|