nephis 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.
- nephis-1.0.0/LICENSE +22 -0
- nephis-1.0.0/PKG-INFO +206 -0
- nephis-1.0.0/README.md +177 -0
- nephis-1.0.0/ananke/__init__.py +77 -0
- nephis-1.0.0/ananke/bastion.py +55 -0
- nephis-1.0.0/ananke/bus.py +107 -0
- nephis-1.0.0/ananke/cdc.py +62 -0
- nephis-1.0.0/ananke/chaos.py +58 -0
- nephis-1.0.0/ananke/client.py +702 -0
- nephis-1.0.0/ananke/compress.py +57 -0
- nephis-1.0.0/ananke/context.py +79 -0
- nephis-1.0.0/ananke/diagnostics.py +51 -0
- nephis-1.0.0/ananke/dns.py +65 -0
- nephis-1.0.0/ananke/exceptions.py +65 -0
- nephis-1.0.0/ananke/finops.py +56 -0
- nephis-1.0.0/ananke/license.py +182 -0
- nephis-1.0.0/ananke/mem_reclaim.py +49 -0
- nephis-1.0.0/ananke/migration.py +62 -0
- nephis-1.0.0/ananke/net_chaos.py +63 -0
- nephis-1.0.0/ananke/nvme_arbiter.py +46 -0
- nephis-1.0.0/ananke/nvme_cache.py +75 -0
- nephis-1.0.0/ananke/pki.py +53 -0
- nephis-1.0.0/ananke/pool.py +70 -0
- nephis-1.0.0/ananke/preparse_shm.py +49 -0
- nephis-1.0.0/ananke/rootfs.py +74 -0
- nephis-1.0.0/ananke/sandbox.py +101 -0
- nephis-1.0.0/ananke/shm.py +82 -0
- nephis-1.0.0/ananke/socket_handoff.py +40 -0
- nephis-1.0.0/ananke/speculate.py +151 -0
- nephis-1.0.0/ananke/storage_pipe.py +59 -0
- nephis-1.0.0/ananke/webhooks.py +59 -0
- nephis-1.0.0/ciel/__init__.py +186 -0
- nephis-1.0.0/ciel/cli.py +909 -0
- nephis-1.0.0/ciel/mcp.py +1564 -0
- nephis-1.0.0/mnemon/__init__.py +7 -0
- nephis-1.0.0/mnemon/client.py +108 -0
- nephis-1.0.0/nephis/__init__.py +39 -0
- nephis-1.0.0/nephis.egg-info/PKG-INFO +206 -0
- nephis-1.0.0/nephis.egg-info/SOURCES.txt +51 -0
- nephis-1.0.0/nephis.egg-info/dependency_links.txt +1 -0
- nephis-1.0.0/nephis.egg-info/entry_points.txt +4 -0
- nephis-1.0.0/nephis.egg-info/requires.txt +4 -0
- nephis-1.0.0/nephis.egg-info/top_level.txt +5 -0
- nephis-1.0.0/pyproject.toml +41 -0
- nephis-1.0.0/setup.cfg +4 -0
- nephis-1.0.0/setup.py +29 -0
- nephis-1.0.0/tests/test_ananke_series.py +86 -0
- nephis-1.0.0/tests/test_sdk.py +237 -0
- nephis-1.0.0/thanaton/__init__.py +36 -0
- nephis-1.0.0/thanaton/cli.py +280 -0
- nephis-1.0.0/thanaton/client.py +598 -0
- nephis-1.0.0/thanaton/exceptions.py +88 -0
- nephis-1.0.0/thanaton/sandbox.py +129 -0
nephis-1.0.0/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Mohit Rajdeo / Ananke Systems
|
|
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.
|
|
22
|
+
|
nephis-1.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: nephis
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: NEPHIS: High-Throughput Isolated Execution Substrate & Zero-Copy Database Branching for AI Agents
|
|
5
|
+
Home-page: https://nephis.theeducode.com
|
|
6
|
+
Author: Mohit Raj Deo
|
|
7
|
+
Author-email: Mohit Raj Deo <mohit@mohitrajdeo.in>
|
|
8
|
+
License: Apache-2.0
|
|
9
|
+
Project-URL: Homepage, https://nephis.theeducode.com
|
|
10
|
+
Project-URL: Documentation, https://nephis.theeducode.com
|
|
11
|
+
Project-URL: Repository, https://github.com/mohitrajdeo/ciel-Aletheia
|
|
12
|
+
Project-URL: Author, https://mohitrajdeo.in
|
|
13
|
+
Keywords: nephis,microvm,sandbox,mcp,ai-agents,code-evaluation,judge0-alternative,database-branching
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
16
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
17
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
18
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
19
|
+
Requires-Python: >=3.8
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
License-File: LICENSE
|
|
22
|
+
Requires-Dist: requests>=2.28.0
|
|
23
|
+
Provides-Extra: dev
|
|
24
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
25
|
+
Dynamic: author
|
|
26
|
+
Dynamic: home-page
|
|
27
|
+
Dynamic: license-file
|
|
28
|
+
Dynamic: requires-python
|
|
29
|
+
|
|
30
|
+
# NEPHIS (Python SDK)
|
|
31
|
+
|
|
32
|
+
> **Official Python SDK for NEPHIS Systems Fabric**
|
|
33
|
+
> Sub-6ms Hardware-Isolated MicroVM Sandboxes, Zero-Copy PostgreSQL Branching, and Bare-Metal Code Execution for Autonomous AI Agents.
|
|
34
|
+
|
|
35
|
+
[](https://www.python.org/)
|
|
36
|
+
[](LICENSE)
|
|
37
|
+
[-green)](thanaton/client.py)
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## ⚡ What is Thanaton?
|
|
42
|
+
|
|
43
|
+
**Thanaton** is a high-performance execution engine built on **Firecracker MicroVMs**, **Userfaultfd lazy memory paging**, and **cgroups v2 jailers**. It allows AI agents and developers to boot full-featured Linux environments in single-digit milliseconds, execute untrusted code safely with KVM hardware isolation, and scale to zero at $0 idle cost.
|
|
44
|
+
|
|
45
|
+
### Thanaton vs. The Competition
|
|
46
|
+
|
|
47
|
+
| Feature | Docker | E2B / Modal | AWS Lambda | **Thanaton** |
|
|
48
|
+
| :--- | :---: | :---: | :---: | :---: |
|
|
49
|
+
| **Cold Boot Latency** | 2s – 10s | 150ms – 400ms | 200ms – 1.5s | **< 6.14ms (< 2ms with UFFD)** ⚡ |
|
|
50
|
+
| **Isolation Tier** | Shared Host Kernel | Container Sandbox | MicroVM | **Hardware KVM Hypervisor** 🔒 |
|
|
51
|
+
| **Scale-to-Zero ($0 Cost)** | ❌ Memory tied up | ❌ Billed per second | ✅ (Stateless only) | **✅ Memory Snapshot (0 MB RAM)** 💾 |
|
|
52
|
+
| **Embedded PostgreSQL** | ❌ Manual Dockerfile | ❌ None | ❌ None | **✅ Instant Bundled Postgres (10ms)** 🗄️ |
|
|
53
|
+
| **Dependency Footprint** | Heavy Daemon | Heavy PyPI deps | AWS SDK bloat | **✅ Zero External Dependencies** 🪶 |
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 🏆 Dual-Hardware Physical Benchmark Matrix (AWS Mumbai `ap-south-1b`)
|
|
58
|
+
Tested across bare-metal-equivalent AWS EC2 instances:
|
|
59
|
+
* **Host 1 (AMD64):** `c8i.large` (Intel Xeon 6975P-C @ 3.8 GHz Turbo, 2 vCPUs, 4 GB RAM, Linux `7.0.0-1014-aws`)
|
|
60
|
+
* **Host 2 (ARM64):** `c8g.large` (AWS Graviton4 Neoverse-V2 @ 2.6 GHz, 2 vCPUs, 4 GB RAM, Linux `7.0.0-1014-aws`)
|
|
61
|
+
|
|
62
|
+
| Subsystem / Metric | Intel Xeon 6 (AMD64) | AWS Graviton4 (ARM64) | Physical Winner | Hardware Root Cause |
|
|
63
|
+
| :--- | :--- | :--- | :--- | :--- |
|
|
64
|
+
| **Thanaton MicroVM Sandbox** | **32.74 ms** (Python 1M sum) | 39.96 ms | **AMD64 (+18.1%)** | Raw single-thread interpreter cycle throughput |
|
|
65
|
+
| **Mnemon-DB 12 Reflink Clusters** | 50.81 ms | **31.67 ms** | **ARM64 (+37.7%)** | XFS extent allocation concurrency on NVMe |
|
|
66
|
+
| **Eschaton Parallel Fan-Out** | **38.2 ms** (50 testcases) | 41.5 ms (50 testcases) | **AMD64 (70x vs Judge0)** | Bare-metal parallel worker fan-out vs sequential Docker |
|
|
67
|
+
| **Hyperion Task Dispatch** | **5,290,366 tasks/s** | 3,052,964 tasks/s | **AMD64 (+42.3%)** | SCX eBPF ring buffer enqueue loop latency |
|
|
68
|
+
| **Hyperion NVMe I/O QoS Clamping** | **17 µs (96% drop)** | **17 µs (96% drop)** | **Parity** | Clamps rogue noisy-neighbor I/O from 3,850 µs to 155 µs |
|
|
69
|
+
| **Acheron Stream Compression** | 3,631.2 MB/s (Snappy) | **4,870.6 MB/s (LZ4)** | **ARM64 (+274.4%)** | ARM NEON vector instruction throughput |
|
|
70
|
+
| **Lethe DuckDB Columnar OLAP** | 177.5M rows/s (1.32 GB/s) | **276.9M rows/s (2.06 GB/s)** | **ARM64 (+56.0%)** | Graviton4 DDR5 memory bandwidth & vector registers |
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## 🎁 Free Tier & Enterprise Deployment Models
|
|
75
|
+
|
|
76
|
+
* **Free Alpha Tier:** 10,000 free evaluation runs on our dedicated endpoint so you can benchmark your reasoning rollouts immediately.
|
|
77
|
+
* **AWS Marketplace AMI:** 1-click pre-baked AMI deployment directly into your private AWS VPC.
|
|
78
|
+
* **On-Premise / BYOC (Bring Your Own Cloud):** Deploy onto your own bare-metal servers or cloud VPC with zero external dependencies.
|
|
79
|
+
* **Fully Managed Dedicated SaaS:** High-availability cluster with sub-50ms execution SLA.
|
|
80
|
+
|
|
81
|
+
> **Direct Contact for All Upgrades, Custom AMIs & Enterprise Licensing:**
|
|
82
|
+
> Email: **`mohit@mohitrajdeo.in`**
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## 📦 Installation
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
pip install nephis
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
*Or install from source:*
|
|
93
|
+
```bash
|
|
94
|
+
git clone https://github.com/MOHITRAJDEO12345/judge0-production-aws.git
|
|
95
|
+
cd judge0-production-aws/sdk/python
|
|
96
|
+
pip install -e .
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 🚀 Quickstart
|
|
102
|
+
|
|
103
|
+
### 1. Ephemeral Code Execution (One-Liner)
|
|
104
|
+
|
|
105
|
+
```python
|
|
106
|
+
import thanaton
|
|
107
|
+
|
|
108
|
+
client = thanaton.Client()
|
|
109
|
+
|
|
110
|
+
result = client.run_code("""
|
|
111
|
+
import numpy as np
|
|
112
|
+
arr = np.array([1, 2, 3, 4, 5])
|
|
113
|
+
print("Mean:", arr.mean())
|
|
114
|
+
""", language="python")
|
|
115
|
+
|
|
116
|
+
print(result.stdout) # "Mean: 3.0"
|
|
117
|
+
print(f"Exit code: {result.exit_code}")
|
|
118
|
+
print(f"Executed in: {result.duration_ms}ms")
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
### 2. Context Manager with Embedded PostgreSQL
|
|
124
|
+
|
|
125
|
+
```python
|
|
126
|
+
import thanaton
|
|
127
|
+
|
|
128
|
+
client = thanaton.Client(
|
|
129
|
+
base_url="http://127.0.0.1:8080",
|
|
130
|
+
api_key="thanaton_sec_..." # optional for authenticated SaaS
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
# Provision a 512MB MicroVM with an embedded PostgreSQL database
|
|
134
|
+
with client.sandboxes.create(runtime="microvm", memory_mb=512, with_db=True) as sbx:
|
|
135
|
+
print(f"Sandbox ID: {sbx.id} (Booted in {sbx.boot_duration_ms:.2f}ms)")
|
|
136
|
+
print(f"PostgreSQL URL: {sbx.db_url}")
|
|
137
|
+
|
|
138
|
+
# 1. Execute bash commands inside the MicroVM
|
|
139
|
+
res = sbx.exec("pip install -q pandas scikit-learn")
|
|
140
|
+
print("Pip stdout:", res.stdout)
|
|
141
|
+
|
|
142
|
+
# 2. Run SQL queries against the embedded database
|
|
143
|
+
sbx.sql("CREATE TABLE metrics (id SERIAL PRIMARY KEY, metric_name TEXT, score FLOAT);")
|
|
144
|
+
sbx.sql("INSERT INTO metrics (metric_name, score) VALUES ('accuracy', 0.985);")
|
|
145
|
+
rows = sbx.sql("SELECT * FROM metrics;")
|
|
146
|
+
print("Database Rows:", rows)
|
|
147
|
+
|
|
148
|
+
# 3. Scale to Zero (Hibernates to NVMe snapshot; 0% CPU, $0 idle RAM)
|
|
149
|
+
sbx.sleep()
|
|
150
|
+
print("Sandbox state:", sbx.state) # "sleeping"
|
|
151
|
+
|
|
152
|
+
# 4. Instant Wake (<2ms Userfaultfd restore)
|
|
153
|
+
sbx.wake()
|
|
154
|
+
print("Sandbox state:", sbx.state) # "running"
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## 🤖 AI Agent Framework Integrations
|
|
160
|
+
|
|
161
|
+
### CrewAI Integration
|
|
162
|
+
|
|
163
|
+
```python
|
|
164
|
+
from crewai.tools import tool
|
|
165
|
+
import thanaton
|
|
166
|
+
|
|
167
|
+
client = thanaton.Client()
|
|
168
|
+
|
|
169
|
+
@tool("Thanaton MicroVM Sandbox")
|
|
170
|
+
def execute_code_safely(code: str, language: str = "python") -> str:
|
|
171
|
+
"""Execute arbitrary untrusted Python, Node, or Bash code in an isolated KVM MicroVM."""
|
|
172
|
+
res = client.run_code(code, language=language)
|
|
173
|
+
if res.ok:
|
|
174
|
+
return res.stdout
|
|
175
|
+
return f"Execution Error (exit {res.exit_code}):\n{res.stderr}"
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### LangChain Integration
|
|
179
|
+
|
|
180
|
+
```python
|
|
181
|
+
from langchain_core.tools import tool
|
|
182
|
+
import thanaton
|
|
183
|
+
|
|
184
|
+
client = thanaton.Client()
|
|
185
|
+
|
|
186
|
+
@tool
|
|
187
|
+
def thanaton_code_executor(code: str) -> str:
|
|
188
|
+
"""Runs Python code safely in a sub-6ms Firecracker MicroVM."""
|
|
189
|
+
res = client.run_code(code, language="python")
|
|
190
|
+
return res.stdout or res.stderr
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## ⚙️ Environment Variables
|
|
196
|
+
|
|
197
|
+
| Variable | Description | Default |
|
|
198
|
+
| :--- | :--- | :--- |
|
|
199
|
+
| `THANATON_API_URL` | Endpoint of the Thanaton Engine or Control Plane | `http://127.0.0.1:8080` |
|
|
200
|
+
| `THANATON_API_KEY` | Bearer token for SaaS authorization | `""` |
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## 📄 License
|
|
205
|
+
|
|
206
|
+
Apache-2.0 © Thanaton Architecture Team
|
nephis-1.0.0/README.md
ADDED
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# NEPHIS (Python SDK)
|
|
2
|
+
|
|
3
|
+
> **Official Python SDK for NEPHIS Systems Fabric**
|
|
4
|
+
> Sub-6ms Hardware-Isolated MicroVM Sandboxes, Zero-Copy PostgreSQL Branching, and Bare-Metal Code Execution for Autonomous AI Agents.
|
|
5
|
+
|
|
6
|
+
[](https://www.python.org/)
|
|
7
|
+
[](LICENSE)
|
|
8
|
+
[-green)](thanaton/client.py)
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## ⚡ What is Thanaton?
|
|
13
|
+
|
|
14
|
+
**Thanaton** is a high-performance execution engine built on **Firecracker MicroVMs**, **Userfaultfd lazy memory paging**, and **cgroups v2 jailers**. It allows AI agents and developers to boot full-featured Linux environments in single-digit milliseconds, execute untrusted code safely with KVM hardware isolation, and scale to zero at $0 idle cost.
|
|
15
|
+
|
|
16
|
+
### Thanaton vs. The Competition
|
|
17
|
+
|
|
18
|
+
| Feature | Docker | E2B / Modal | AWS Lambda | **Thanaton** |
|
|
19
|
+
| :--- | :---: | :---: | :---: | :---: |
|
|
20
|
+
| **Cold Boot Latency** | 2s – 10s | 150ms – 400ms | 200ms – 1.5s | **< 6.14ms (< 2ms with UFFD)** ⚡ |
|
|
21
|
+
| **Isolation Tier** | Shared Host Kernel | Container Sandbox | MicroVM | **Hardware KVM Hypervisor** 🔒 |
|
|
22
|
+
| **Scale-to-Zero ($0 Cost)** | ❌ Memory tied up | ❌ Billed per second | ✅ (Stateless only) | **✅ Memory Snapshot (0 MB RAM)** 💾 |
|
|
23
|
+
| **Embedded PostgreSQL** | ❌ Manual Dockerfile | ❌ None | ❌ None | **✅ Instant Bundled Postgres (10ms)** 🗄️ |
|
|
24
|
+
| **Dependency Footprint** | Heavy Daemon | Heavy PyPI deps | AWS SDK bloat | **✅ Zero External Dependencies** 🪶 |
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 🏆 Dual-Hardware Physical Benchmark Matrix (AWS Mumbai `ap-south-1b`)
|
|
29
|
+
Tested across bare-metal-equivalent AWS EC2 instances:
|
|
30
|
+
* **Host 1 (AMD64):** `c8i.large` (Intel Xeon 6975P-C @ 3.8 GHz Turbo, 2 vCPUs, 4 GB RAM, Linux `7.0.0-1014-aws`)
|
|
31
|
+
* **Host 2 (ARM64):** `c8g.large` (AWS Graviton4 Neoverse-V2 @ 2.6 GHz, 2 vCPUs, 4 GB RAM, Linux `7.0.0-1014-aws`)
|
|
32
|
+
|
|
33
|
+
| Subsystem / Metric | Intel Xeon 6 (AMD64) | AWS Graviton4 (ARM64) | Physical Winner | Hardware Root Cause |
|
|
34
|
+
| :--- | :--- | :--- | :--- | :--- |
|
|
35
|
+
| **Thanaton MicroVM Sandbox** | **32.74 ms** (Python 1M sum) | 39.96 ms | **AMD64 (+18.1%)** | Raw single-thread interpreter cycle throughput |
|
|
36
|
+
| **Mnemon-DB 12 Reflink Clusters** | 50.81 ms | **31.67 ms** | **ARM64 (+37.7%)** | XFS extent allocation concurrency on NVMe |
|
|
37
|
+
| **Eschaton Parallel Fan-Out** | **38.2 ms** (50 testcases) | 41.5 ms (50 testcases) | **AMD64 (70x vs Judge0)** | Bare-metal parallel worker fan-out vs sequential Docker |
|
|
38
|
+
| **Hyperion Task Dispatch** | **5,290,366 tasks/s** | 3,052,964 tasks/s | **AMD64 (+42.3%)** | SCX eBPF ring buffer enqueue loop latency |
|
|
39
|
+
| **Hyperion NVMe I/O QoS Clamping** | **17 µs (96% drop)** | **17 µs (96% drop)** | **Parity** | Clamps rogue noisy-neighbor I/O from 3,850 µs to 155 µs |
|
|
40
|
+
| **Acheron Stream Compression** | 3,631.2 MB/s (Snappy) | **4,870.6 MB/s (LZ4)** | **ARM64 (+274.4%)** | ARM NEON vector instruction throughput |
|
|
41
|
+
| **Lethe DuckDB Columnar OLAP** | 177.5M rows/s (1.32 GB/s) | **276.9M rows/s (2.06 GB/s)** | **ARM64 (+56.0%)** | Graviton4 DDR5 memory bandwidth & vector registers |
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 🎁 Free Tier & Enterprise Deployment Models
|
|
46
|
+
|
|
47
|
+
* **Free Alpha Tier:** 10,000 free evaluation runs on our dedicated endpoint so you can benchmark your reasoning rollouts immediately.
|
|
48
|
+
* **AWS Marketplace AMI:** 1-click pre-baked AMI deployment directly into your private AWS VPC.
|
|
49
|
+
* **On-Premise / BYOC (Bring Your Own Cloud):** Deploy onto your own bare-metal servers or cloud VPC with zero external dependencies.
|
|
50
|
+
* **Fully Managed Dedicated SaaS:** High-availability cluster with sub-50ms execution SLA.
|
|
51
|
+
|
|
52
|
+
> **Direct Contact for All Upgrades, Custom AMIs & Enterprise Licensing:**
|
|
53
|
+
> Email: **`mohit@mohitrajdeo.in`**
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 📦 Installation
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
pip install nephis
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
*Or install from source:*
|
|
64
|
+
```bash
|
|
65
|
+
git clone https://github.com/MOHITRAJDEO12345/judge0-production-aws.git
|
|
66
|
+
cd judge0-production-aws/sdk/python
|
|
67
|
+
pip install -e .
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 🚀 Quickstart
|
|
73
|
+
|
|
74
|
+
### 1. Ephemeral Code Execution (One-Liner)
|
|
75
|
+
|
|
76
|
+
```python
|
|
77
|
+
import thanaton
|
|
78
|
+
|
|
79
|
+
client = thanaton.Client()
|
|
80
|
+
|
|
81
|
+
result = client.run_code("""
|
|
82
|
+
import numpy as np
|
|
83
|
+
arr = np.array([1, 2, 3, 4, 5])
|
|
84
|
+
print("Mean:", arr.mean())
|
|
85
|
+
""", language="python")
|
|
86
|
+
|
|
87
|
+
print(result.stdout) # "Mean: 3.0"
|
|
88
|
+
print(f"Exit code: {result.exit_code}")
|
|
89
|
+
print(f"Executed in: {result.duration_ms}ms")
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
### 2. Context Manager with Embedded PostgreSQL
|
|
95
|
+
|
|
96
|
+
```python
|
|
97
|
+
import thanaton
|
|
98
|
+
|
|
99
|
+
client = thanaton.Client(
|
|
100
|
+
base_url="http://127.0.0.1:8080",
|
|
101
|
+
api_key="thanaton_sec_..." # optional for authenticated SaaS
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
# Provision a 512MB MicroVM with an embedded PostgreSQL database
|
|
105
|
+
with client.sandboxes.create(runtime="microvm", memory_mb=512, with_db=True) as sbx:
|
|
106
|
+
print(f"Sandbox ID: {sbx.id} (Booted in {sbx.boot_duration_ms:.2f}ms)")
|
|
107
|
+
print(f"PostgreSQL URL: {sbx.db_url}")
|
|
108
|
+
|
|
109
|
+
# 1. Execute bash commands inside the MicroVM
|
|
110
|
+
res = sbx.exec("pip install -q pandas scikit-learn")
|
|
111
|
+
print("Pip stdout:", res.stdout)
|
|
112
|
+
|
|
113
|
+
# 2. Run SQL queries against the embedded database
|
|
114
|
+
sbx.sql("CREATE TABLE metrics (id SERIAL PRIMARY KEY, metric_name TEXT, score FLOAT);")
|
|
115
|
+
sbx.sql("INSERT INTO metrics (metric_name, score) VALUES ('accuracy', 0.985);")
|
|
116
|
+
rows = sbx.sql("SELECT * FROM metrics;")
|
|
117
|
+
print("Database Rows:", rows)
|
|
118
|
+
|
|
119
|
+
# 3. Scale to Zero (Hibernates to NVMe snapshot; 0% CPU, $0 idle RAM)
|
|
120
|
+
sbx.sleep()
|
|
121
|
+
print("Sandbox state:", sbx.state) # "sleeping"
|
|
122
|
+
|
|
123
|
+
# 4. Instant Wake (<2ms Userfaultfd restore)
|
|
124
|
+
sbx.wake()
|
|
125
|
+
print("Sandbox state:", sbx.state) # "running"
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## 🤖 AI Agent Framework Integrations
|
|
131
|
+
|
|
132
|
+
### CrewAI Integration
|
|
133
|
+
|
|
134
|
+
```python
|
|
135
|
+
from crewai.tools import tool
|
|
136
|
+
import thanaton
|
|
137
|
+
|
|
138
|
+
client = thanaton.Client()
|
|
139
|
+
|
|
140
|
+
@tool("Thanaton MicroVM Sandbox")
|
|
141
|
+
def execute_code_safely(code: str, language: str = "python") -> str:
|
|
142
|
+
"""Execute arbitrary untrusted Python, Node, or Bash code in an isolated KVM MicroVM."""
|
|
143
|
+
res = client.run_code(code, language=language)
|
|
144
|
+
if res.ok:
|
|
145
|
+
return res.stdout
|
|
146
|
+
return f"Execution Error (exit {res.exit_code}):\n{res.stderr}"
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### LangChain Integration
|
|
150
|
+
|
|
151
|
+
```python
|
|
152
|
+
from langchain_core.tools import tool
|
|
153
|
+
import thanaton
|
|
154
|
+
|
|
155
|
+
client = thanaton.Client()
|
|
156
|
+
|
|
157
|
+
@tool
|
|
158
|
+
def thanaton_code_executor(code: str) -> str:
|
|
159
|
+
"""Runs Python code safely in a sub-6ms Firecracker MicroVM."""
|
|
160
|
+
res = client.run_code(code, language="python")
|
|
161
|
+
return res.stdout or res.stderr
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## ⚙️ Environment Variables
|
|
167
|
+
|
|
168
|
+
| Variable | Description | Default |
|
|
169
|
+
| :--- | :--- | :--- |
|
|
170
|
+
| `THANATON_API_URL` | Endpoint of the Thanaton Engine or Control Plane | `http://127.0.0.1:8080` |
|
|
171
|
+
| `THANATON_API_KEY` | Bearer token for SaaS authorization | `""` |
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## 📄 License
|
|
176
|
+
|
|
177
|
+
Apache-2.0 © Thanaton Architecture Team
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"""Ananke: Unified Control Plane SDK for Silicon Sandboxes and Deterministic Systems Infrastructure."""
|
|
2
|
+
|
|
3
|
+
from .client import Client, SandboxManager
|
|
4
|
+
from .license import LicenseAuthority, LicenseToken, LicenseError
|
|
5
|
+
from .cdc import CDCManager
|
|
6
|
+
from .webhooks import WebhookManager
|
|
7
|
+
from .finops import FinOpsManager
|
|
8
|
+
from .diagnostics import DiagnosticsManager
|
|
9
|
+
from .chaos import ChaosManager
|
|
10
|
+
from .pool import PoolManager
|
|
11
|
+
from .storage_pipe import StoragePipeManager
|
|
12
|
+
from .rootfs import RootfsManager
|
|
13
|
+
from .dns import DNSManager
|
|
14
|
+
from .migration import LiveMigrationManager
|
|
15
|
+
from .bastion import BastionManager
|
|
16
|
+
from .pki import PKIManager
|
|
17
|
+
from .compress import CompressManager
|
|
18
|
+
from .socket_handoff import SocketHandoffManager
|
|
19
|
+
from .nvme_cache import NVMeCacheManager
|
|
20
|
+
from .mem_reclaim import MemoryReclaimManager
|
|
21
|
+
from .net_chaos import GrayNetManager
|
|
22
|
+
from .nvme_arbiter import IOArbiterManager
|
|
23
|
+
from .preparse_shm import SHMCompilerManager
|
|
24
|
+
from .exceptions import (
|
|
25
|
+
AnankeConnectionError,
|
|
26
|
+
AnankeError,
|
|
27
|
+
APIError,
|
|
28
|
+
EscalationRequiredException,
|
|
29
|
+
ExecutionTimeoutError,
|
|
30
|
+
SandboxNotFoundError,
|
|
31
|
+
SQLError,
|
|
32
|
+
)
|
|
33
|
+
from .context import SpeculationContext
|
|
34
|
+
from .bus import SpeculationBus, EventType
|
|
35
|
+
from .shm import ZeroCopyRing
|
|
36
|
+
from .speculate import SpeculationEngine, SpeculationResult
|
|
37
|
+
from .sandbox import ExecResult, Sandbox
|
|
38
|
+
|
|
39
|
+
__version__ = "1.2.0"
|
|
40
|
+
__all__ = [
|
|
41
|
+
"Client",
|
|
42
|
+
"Sandbox",
|
|
43
|
+
"SandboxManager",
|
|
44
|
+
"SpeculationContext",
|
|
45
|
+
"SpeculationBus",
|
|
46
|
+
"ZeroCopyRing",
|
|
47
|
+
"SpeculationEngine",
|
|
48
|
+
"SpeculationResult",
|
|
49
|
+
"ExecResult",
|
|
50
|
+
"LicenseAuthority",
|
|
51
|
+
"LicenseToken",
|
|
52
|
+
"LicenseError",
|
|
53
|
+
"CDCManager",
|
|
54
|
+
"WebhookManager",
|
|
55
|
+
"FinOpsManager",
|
|
56
|
+
"DiagnosticsManager",
|
|
57
|
+
"ChaosManager",
|
|
58
|
+
"PoolManager",
|
|
59
|
+
"StoragePipeManager",
|
|
60
|
+
"RootfsManager",
|
|
61
|
+
"DNSManager",
|
|
62
|
+
"LiveMigrationManager",
|
|
63
|
+
"BastionManager",
|
|
64
|
+
"PKIManager",
|
|
65
|
+
"CompressManager",
|
|
66
|
+
"SocketHandoffManager",
|
|
67
|
+
"NVMeCacheManager",
|
|
68
|
+
"MemoryReclaimManager",
|
|
69
|
+
"GrayNetManager",
|
|
70
|
+
"IOArbiterManager",
|
|
71
|
+
"SHMCompilerManager",
|
|
72
|
+
"AnankeError",
|
|
73
|
+
"APIError",
|
|
74
|
+
"SandboxNotFoundError",
|
|
75
|
+
"SQLError",
|
|
76
|
+
"ExecutionTimeoutError",
|
|
77
|
+
]
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Ananke Ephemeral DB Bastion (Powered by db-bastion)
|
|
3
|
+
Zero-Trust Ephemeral Wire-Level PostgreSQL Proxy & Audit Engine.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import subprocess
|
|
7
|
+
import shutil
|
|
8
|
+
import os
|
|
9
|
+
import json
|
|
10
|
+
from typing import Dict, Any, List, Optional
|
|
11
|
+
from .license import LicenseAuthority
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class BastionManager:
|
|
15
|
+
def __init__(self, client: Any, authority: Optional[LicenseAuthority] = None):
|
|
16
|
+
self._client = client
|
|
17
|
+
self._authority = authority or getattr(client, "authority", LicenseAuthority())
|
|
18
|
+
|
|
19
|
+
def _get_bin_path(self) -> str:
|
|
20
|
+
bin_name = "db-bastion-windows-amd64.exe" if os.name == "nt" else "db-bastion"
|
|
21
|
+
p = shutil.which(bin_name) or shutil.which("db-bastion")
|
|
22
|
+
if p:
|
|
23
|
+
return p
|
|
24
|
+
base = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", ".."))
|
|
25
|
+
local_bin = os.path.join(base, "product_ideas", "02_ephemeral_db_ssh_gateway", "bin", bin_name)
|
|
26
|
+
if os.path.exists(local_bin):
|
|
27
|
+
return local_bin
|
|
28
|
+
return bin_name
|
|
29
|
+
|
|
30
|
+
def generate_token(self, tenant_id: str, username: str, duration_sec: int = 900) -> Dict[str, Any]:
|
|
31
|
+
"""Generate a cryptographically signed ephemeral access token."""
|
|
32
|
+
self._authority.assert_feature("bastion_basic")
|
|
33
|
+
bin_path = self._get_bin_path()
|
|
34
|
+
res = subprocess.run(
|
|
35
|
+
[bin_path, "token", "--tenant", tenant_id, "--user", username, "--duration", f"{duration_sec}s"],
|
|
36
|
+
capture_output=True, text=True, check=True
|
|
37
|
+
)
|
|
38
|
+
return {"output": res.stdout.strip()}
|
|
39
|
+
|
|
40
|
+
def inspect_audit(self, audit_file_path: str) -> List[Dict[str, Any]]:
|
|
41
|
+
"""Parse and return structured JSON audit entries from an append-only bastion log."""
|
|
42
|
+
self._authority.assert_feature("bastion_basic")
|
|
43
|
+
if not os.path.exists(audit_file_path):
|
|
44
|
+
return []
|
|
45
|
+
entries = []
|
|
46
|
+
with open(audit_file_path, "r", encoding="utf-8") as f:
|
|
47
|
+
for line in f:
|
|
48
|
+
line = line.strip()
|
|
49
|
+
if line:
|
|
50
|
+
try:
|
|
51
|
+
entries.append(json.loads(line))
|
|
52
|
+
except Exception:
|
|
53
|
+
pass
|
|
54
|
+
return entries
|
|
55
|
+
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Ananke Speculation Bus (In-Memory / eBPF RingBuffer Event Mesh).
|
|
3
|
+
Broadcasts lifecycle events across the speculation fabric.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import json
|
|
7
|
+
import queue
|
|
8
|
+
import threading
|
|
9
|
+
import time
|
|
10
|
+
from typing import Dict, Any, List, Optional, Callable
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class EventType:
|
|
14
|
+
SPECULATION_SPAWN = "EVENT_SPECULATION_SPAWN"
|
|
15
|
+
UFFD_PAGE_FAULT_RESOLVED = "EVENT_UFFD_PAGE_FAULT_RESOLVED"
|
|
16
|
+
POSTGRES_SCHEMA_EVOLVED = "EVENT_POSTGRES_SCHEMA_EVOLVED"
|
|
17
|
+
GRAY_NETWORK_DETECTED = "EVENT_GRAY_NETWORK_DETECTED"
|
|
18
|
+
BRANCH_PRUNED = "EVENT_BRANCH_PRUNED"
|
|
19
|
+
WINNER_ELECTED = "EVENT_WINNER_ELECTED"
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class SpeculationEvent:
|
|
23
|
+
def __init__(
|
|
24
|
+
self,
|
|
25
|
+
event_id: int,
|
|
26
|
+
event_type: str,
|
|
27
|
+
tenant_id: str,
|
|
28
|
+
branch_id: str,
|
|
29
|
+
payload: Dict[str, Any],
|
|
30
|
+
timestamp_ns: Optional[int] = None,
|
|
31
|
+
):
|
|
32
|
+
self.id = event_id
|
|
33
|
+
self.type = event_type
|
|
34
|
+
self.tenant_id = tenant_id
|
|
35
|
+
self.branch_id = branch_id
|
|
36
|
+
self.payload = payload
|
|
37
|
+
self.timestamp_ns = timestamp_ns or time.time_ns()
|
|
38
|
+
|
|
39
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
40
|
+
return {
|
|
41
|
+
"id": self.id,
|
|
42
|
+
"type": self.type,
|
|
43
|
+
"tenant_id": self.tenant_id,
|
|
44
|
+
"branch_id": self.branch_id,
|
|
45
|
+
"timestamp_ns": self.timestamp_ns,
|
|
46
|
+
"payload": self.payload,
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class SpeculationBus:
|
|
51
|
+
"""Thread-safe in-memory event mesh and circular history ring."""
|
|
52
|
+
|
|
53
|
+
def __init__(self, ring_capacity: int = 4096):
|
|
54
|
+
self.ring_capacity = ring_capacity
|
|
55
|
+
self._seq = 0
|
|
56
|
+
self._lock = threading.Lock()
|
|
57
|
+
self._subscribers: Dict[str, queue.Queue] = {}
|
|
58
|
+
self._ring: List[SpeculationEvent] = []
|
|
59
|
+
|
|
60
|
+
def publish(
|
|
61
|
+
self,
|
|
62
|
+
event_type: str,
|
|
63
|
+
tenant_id: str,
|
|
64
|
+
branch_id: str,
|
|
65
|
+
payload: Optional[Dict[str, Any]] = None,
|
|
66
|
+
) -> SpeculationEvent:
|
|
67
|
+
with self._lock:
|
|
68
|
+
self._seq += 1
|
|
69
|
+
ev = SpeculationEvent(
|
|
70
|
+
event_id=self._seq,
|
|
71
|
+
event_type=event_type,
|
|
72
|
+
tenant_id=tenant_id,
|
|
73
|
+
branch_id=branch_id,
|
|
74
|
+
payload=payload or {},
|
|
75
|
+
)
|
|
76
|
+
self._ring.append(ev)
|
|
77
|
+
if len(self._ring) > self.ring_capacity:
|
|
78
|
+
self._ring.pop(0)
|
|
79
|
+
|
|
80
|
+
# Broadcast non-blocking to active subscribers
|
|
81
|
+
for sub_queue in list(self._subscribers.values()):
|
|
82
|
+
try:
|
|
83
|
+
sub_queue.put_nowait(ev)
|
|
84
|
+
except queue.Full:
|
|
85
|
+
pass
|
|
86
|
+
return ev
|
|
87
|
+
|
|
88
|
+
def subscribe(self, subscriber_id: str, max_buffer: int = 256) -> queue.Queue:
|
|
89
|
+
with self._lock:
|
|
90
|
+
q = queue.Queue(maxsize=max_buffer)
|
|
91
|
+
self._subscribers[subscriber_id] = q
|
|
92
|
+
return q
|
|
93
|
+
|
|
94
|
+
def unsubscribe(self, subscriber_id: str) -> None:
|
|
95
|
+
with self._lock:
|
|
96
|
+
self._subscribers.pop(subscriber_id, None)
|
|
97
|
+
|
|
98
|
+
def stats(self) -> Dict[str, Any]:
|
|
99
|
+
with self._lock:
|
|
100
|
+
return {
|
|
101
|
+
"published_events": self._seq,
|
|
102
|
+
"active_listeners": len(self._subscribers),
|
|
103
|
+
"ring_stored": len(self._ring),
|
|
104
|
+
"ring_capacity": self.ring_capacity,
|
|
105
|
+
"status": "OPERATIONAL",
|
|
106
|
+
}
|
|
107
|
+
|