You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
One environment. Infinite packages/versions/dependencies. No duplicates/downgrades ever again. You can significantly reduce your reliance on pipx, uv, conda, Docker, etc. today.
9
-
💥 The Proof: Orchestrating an "Impossible" Install
12
+
13
+
## 💥 The Proof: Orchestrating an "Impossible" Install
14
+
10
15
Other tools attempt dependency resolution. Omnipkg orchestrates dependency symphonies.
16
+
11
17
To prove this, we'll do something no other tool can: install two conflicting versions of PyTorch in a single command, provided in the "wrong" order.
12
-
Step 1: Request the Impossible
18
+
19
+
### Step 1: Request the Impossible
20
+
```bash
13
21
$ omnipkg install torch==2.0.0 torch==2.7.1
22
+
```
14
23
15
-
Step 2: Watch the Magic
16
-
omnipkg doesn't fail. It orchestrates. It intelligently reorders the request for optimal execution, installs the newest version, then isolates the older, conflicting version in a bubble.
24
+
### Step 2: Watch the Magic
25
+
26
+
omnipkg doesn’t fail. It orchestrates. It intelligently reorders the request for optimal execution, installs the newest version, then isolates the older, conflicting version in a bubble.
27
+
28
+
```
17
29
🔄 Reordered packages for optimal installation: torch==2.7.1, torch==2.0.0
🔄 Restoring 'torch' to safe version v2.7.1 in main environment...
32
44
✅ Environment protection complete!
45
+
```
33
46
34
47
The operation leaves a pristine main environment and a perfectly isolated older version, ready for use.
35
-
The Unsolvable Problem, Solved.
36
-
For decades, the Python community has accepted a frustrating reality: if you need two versions of the same package, you need two virtual environments. A legacy project needing tensorflow==1.15 and a new project needing tensorflow==2.10 could not coexist. We've been stuck in dependency hell.
48
+
49
+
## The Unsolvable Problem, Solved.
50
+
51
+
For decades, the Python community has accepted a frustrating reality: if you need two versions of the same package, you need two virtual environments. A legacy project needing tensorflow==1.15 and a new project needing tensorflow==2.10 could not coexist. We’ve been stuck in dependency hell.
52
+
37
53
omnipkg ends dependency hell once and for all.
38
-
It is a revolutionary package manager that allows you to run multiple, conflicting packages and dependencies in a single Python environment. omnipkg intelligently isolates only the conflicting package and its historically-correct dependencies, while your entire environment continues to share all other compatible packages. Our roadmap includes a "time machine" builder that can even handle legacy packages that no longer build on modern systems, giving you access to ancient dependencies with a single command.
54
+
55
+
It is a revolutionary package manager that allows you to run multiple, conflicting packages and dependencies in a single Python environment. omnipkg intelligently isolates only the conflicting package and its historically-correct dependencies, while your entire environment continues to share all other compatible packages. Our roadmap includes a “time machine” builder that can even handle legacy packages that no longer build on modern systems, giving you access to ancient dependencies with a single command.
56
+
39
57
The result is one clean environment, infinite versions, and zero waste.
40
-
🛠️ Easy Install
58
+
59
+
## 🛠️ Easy Install
60
+
41
61
Get started in under 1 minute.
62
+
63
+
```bash
42
64
# First, install omnipkg (after installing Redis)
43
65
pip install omnipkg
44
66
45
67
# Then, run the fully automated stress test
46
68
omnipkg stress-test
69
+
```
70
+
71
+
## 🌍 Real-World Example
47
72
48
-
<table>
49
-
<tr>
50
-
<tdwidth="50%">
51
-
🌍 Real-World Example
52
73
Imagine maintaining a Flask app that needs:
53
-
* flask-login==0.4.1 (legacy)
54
-
* requests==2.28.0 (new)
55
-
* scikit-learn==0.24 (ML)
56
-
Traditional:
57
-
3 separate environments
58
-
omnipkg:
59
-
Single environment
60
-
</td>
61
-
<tdwidth="50%">
62
-
🏢 Enterprise Impact
63
-
| Metric | Before omnipkg | After omnipkg |
64
-
|---|---|---|
65
-
| CI/CD Complexity | 5 envs | 1 env |
66
-
| Storage Overhead | 8.7GB | 3.5GB |
67
-
| Setup Time | 22 min | 30 sec |
68
-
| Deduplication | 0% |~60% |
69
-
| KB Build Speed | N/A | 7 pkgs/sec |
70
-
| Recovery Time | Hours | Seconds |
71
-
</td>
72
-
</tr>
73
-
</table>
74
-
🧠 Key Features
75
-
* Intelligent Task Reordering: Automatically sorts packages to install newest versions first, ensuring downgrade protection is triggered with surgical precision.
76
-
* Intelligent Downgrade Protection: Automatically detects and prevents pip installs that would break your existing environment.
77
-
* Surgical Version Bubbles: Creates lightweight, self-contained bubbles for conflicting packages and their entire historical dependency trees.
78
-
* Efficient Deduplication: Bubbles only contain the necessary files. All compatible dependencies are shared with the main environment, saving on average 60% of disk space.
79
-
* Dynamic Runtime Switching: A seamless loader allows your scripts to activate a specific bubbled version on-demand, without changing your environment.
80
-
* Atomic Environment Cleansing: A core design principle that surgically prepares the environment before complex operations.
81
-
* Lightning-Fast Knowledge Base: Builds metadata at 7 packages/second with intelligent caching and delta updates.
82
-
* Nuclear-Grade C-Extension Mixing: 100% reliable runtime swapping of numpy, scipy, and other C-extensions that was previously "impossible".
83
-
* The Guardian Protocol: omnipkg revert with automatic environment snapshots - your ultimate undo button.
84
-
* Registry-Based Deduplication (Coming Soon): A future feature to expand space savings by sharing files across bubbles.
85
-
* Multi-Interpreter Support (Coming Soon): Seamlessly switch between different Python versions in a single environment.
86
-
* Extreme Scale Testing: Battle-tested with 35GB+ of bubbles in tmpfs (until the developer's RAM gave up!).
87
-
Your Environment Visualized
74
+
75
+
- flask-login==0.4.1 (legacy)
76
+
- requests==2.28.0 (new)
77
+
- scikit-learn==0.24 (ML)
78
+
79
+
**Traditional**: 3 separate environments
80
+
**omnipkg**: Single environment
81
+
82
+
## 🏢 Enterprise Impact
83
+
84
+
|Metric |Before omnipkg|After omnipkg|
85
+
|----------------|--------------|-------------|
86
+
|CI/CD Complexity|5 envs |1 env |
87
+
|Storage Overhead|8.7GB |3.5GB |
88
+
|Setup Time |22 min |30 sec |
89
+
|Deduplication |0% |~60% |
90
+
|KB Build Speed |N/A |7 pkgs/sec |
91
+
|Recovery Time |Hours |Seconds |
92
+
93
+
## 🧠 Key Features
94
+
95
+
-**Intelligent Task Reordering**: Automatically sorts packages to install newest versions first, ensuring downgrade protection is triggered with surgical precision.
96
+
-**Intelligent Downgrade Protection**: Automatically detects and prevents pip installs that would break your existing environment.
97
+
-**Surgical Version Bubbles**: Creates lightweight, self-contained bubbles for conflicting packages and their entire historical dependency trees.
98
+
-**Efficient Deduplication**: Bubbles only contain the necessary files. All compatible dependencies are shared with the main environment, saving on average 60% of disk space.
99
+
-**Dynamic Runtime Switching**: A seamless loader allows your scripts to activate a specific bubbled version on-demand, without changing your environment.
100
+
-**Atomic Environment Cleansing**: A core design principle that surgically prepares the environment before complex operations.
101
+
-**Lightning-Fast Knowledge Base**: Builds metadata at 7 packages/second with intelligent caching and delta updates.
102
+
-**Nuclear-Grade C-Extension Mixing**: 100% reliable runtime swapping of numpy, scipy, and other C-extensions that was previously “impossible”.
103
+
-**The Guardian Protocol**: omnipkg revert with automatic environment snapshots - your ultimate undo button.
104
+
-**Registry-Based Deduplication (Coming Soon)**: A future feature to expand space savings by sharing files across bubbles.
105
+
-**Multi-Interpreter Support (Coming Soon)**: Seamlessly switch between different Python versions in a single environment.
106
+
-**Extreme Scale Testing**: Battle-tested with 35GB+ of bubbles in tmpfs (until the developer’s RAM gave up!).
107
+
108
+
## Your Environment Visualized
109
+
110
+
```
88
111
├── numpy==1.26
89
112
├── pandas==2.1
90
113
└── .omnipkg_versions (bubbles)
91
-
├── tensorflow-1.15
92
-
│ ├── numpy==1.16 # isolated, 58% space saved
93
-
└── tensorflow-2.10
94
-
├── numpy==1.24 # isolated, 62% space saved
95
-
🎯 Why omnipkg Changes Everything
96
-
🏢 Enterprise Scenario
97
-
"Our data science team needed 3 versions of TensorFlow (1.15, 2.4, 2.9) in the same JupyterHub environment. omnipkg made it work with zero conflicts and saved us 60% storage space."
98
-
Before omnipkg:
99
-
* Need Django 3.2 for one project, Django 4.0 for another? → Two virtual environments
100
-
* Legacy package needs requests==2.20.0 but your app needs 2.28.0? → Dependency hell
101
-
* Want to test your code against multiple package versions? → Complex CI/CD setup
102
-
* Made a mistake? → Start over from scratch
103
-
With omnipkg:
104
-
* One environment, infinite package versions
105
-
* Zero conflicts, zero waste (60% deduplication on average)
106
-
* Runtime version switching without pip
107
-
* Install from requirements.txt with intelligent conflict handling
108
-
* omnipkg revert for instant rollback
109
-
* Just install and import - things simply work
110
-
* Only specify versions when you need runtime switching
114
+
├── tensorflow-1.15
115
+
│ ├── numpy==1.16 # isolated, 58% space saved
116
+
└── tensorflow-2.10
117
+
├── numpy==1.24 # isolated, 62% space saved
118
+
```
119
+
120
+
## 🎯 Why omnipkg Changes Everything
121
+
122
+
### 🏢 Enterprise Scenario
123
+
124
+
“Our data science team needed 3 versions of TensorFlow (1.15, 2.4, 2.9) in the same JupyterHub environment. omnipkg made it work with zero conflicts and saved us 60% storage space.”
125
+
126
+
**Before omnipkg**:
127
+
128
+
- Need Django 3.2 for one project, Django 4.0 for another? → Two virtual environments
129
+
- Legacy package needs requests==2.20.0 but your app needs 2.28.0? → Dependency hell
130
+
- Want to test your code against multiple package versions? → Complex CI/CD setup
131
+
- Made a mistake? → Start over from scratch
132
+
133
+
**With omnipkg**:
134
+
135
+
- One environment, infinite package versions
136
+
- Zero conflicts, zero waste (60% deduplication on average)
137
+
- Runtime version switching without pip
138
+
- Install from requirements.txt with intelligent conflict handling
139
+
- omnipkg revert for instant rollback
140
+
- Just install and import - things simply work
141
+
- Only specify versions when you need runtime switching
142
+
143
+
## 🔥 Ultimate Validation: NumPy & SciPy Version Matrix
144
+
111
145
<details>
112
-
<summary><strong>🔥 Ultimate Validation: NumPy & SciPy Version Matrix</strong></summary>
You now have both versions available without virtual environments or conflicts.
273
+
221
274
</details>
275
+
276
+
222
277
> Professional enough for enterprises, fun enough for developers
223
-
>
224
-
<br>
225
-
For the memes
278
+
279
+
## For the memes
280
+
281
+
```
226
282
___________________________________________
227
283
/ \
228
284
| pip is in omnipkg jail 🔒 |
@@ -237,12 +293,21 @@ For the memes
237
293
(__)\ )\/\
238
294
||----w |
239
295
|| ||
296
+
```
297
+
298
+
## 📄 Licensing
240
299
241
-
📄 Licensing
242
300
omnipkg uses a dual-license model:
243
-
* AGPLv3: For open-source and academic use (View License)
244
-
* Commercial License: For proprietary systems and organizations
245
-
Commercial inquiries: omnipkg@proton.me
246
-
🤝 Contributing
247
-
This project was born out of a real-world problem, and it thrives on community collaboration. Contributions, bug reports, and feature requests are incredibly welcome. Please feel free to check the issues page to get started.
248
301
302
+
-**AGPLv3**: For open-source and academic use ([View License](https://www.gnu.org/licenses/agpl-3.0))
303
+
-**Commercial License**: For proprietary systems and organizations
This project was born out of a real-world problem, and it thrives on community collaboration. Contributions, bug reports, and feature requests are incredibly welcome. Please feel free to check the [issues page](https://github.com/1minds3t/omnipkg/issues) to get started.
0 commit comments