awnode 0.3.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.
Files changed (45) hide show
  1. awnode-0.3.0/.gitignore +1 -0
  2. awnode-0.3.0/Dockerfile +44 -0
  3. awnode-0.3.0/LICENSE +21 -0
  4. awnode-0.3.0/PKG-INFO +98 -0
  5. awnode-0.3.0/README.md +73 -0
  6. awnode-0.3.0/_smoke_check.py +12 -0
  7. awnode-0.3.0/awnode/__init__.py +20 -0
  8. awnode-0.3.0/awnode/__main__.py +6 -0
  9. awnode-0.3.0/awnode/cli.py +884 -0
  10. awnode-0.3.0/awnode/comfyui_setup.py +407 -0
  11. awnode-0.3.0/awnode/extensions.py +596 -0
  12. awnode-0.3.0/awnode/license.py +339 -0
  13. awnode-0.3.0/awnode/mcp_server.py +543 -0
  14. awnode-0.3.0/awnode/proxy.py +291 -0
  15. awnode-0.3.0/awnode/server.py +1824 -0
  16. awnode-0.3.0/awnode/service_install.py +296 -0
  17. awnode-0.3.0/awnode/sync.py +394 -0
  18. awnode-0.3.0/awnode/tools/__init__.py +17 -0
  19. awnode-0.3.0/awnode/tools/_http.py +297 -0
  20. awnode-0.3.0/awnode/tools/_scopes.py +211 -0
  21. awnode-0.3.0/awnode/tools/commands.py +134 -0
  22. awnode-0.3.0/awnode/tools/context.py +63 -0
  23. awnode-0.3.0/awnode/tools/documents.py +156 -0
  24. awnode-0.3.0/awnode/tools/embeddings.py +107 -0
  25. awnode-0.3.0/awnode/tools/extensions.py +80 -0
  26. awnode-0.3.0/awnode/tools/filesystem.py +242 -0
  27. awnode-0.3.0/awnode/tools/generation.py +187 -0
  28. awnode-0.3.0/awnode/tools/git_tools.py +375 -0
  29. awnode-0.3.0/awnode/tools/http_client.py +61 -0
  30. awnode-0.3.0/awnode/tools/knowledge.py +143 -0
  31. awnode-0.3.0/awnode/tools/memory.py +116 -0
  32. awnode-0.3.0/awnode/tools/mermaid.py +100 -0
  33. awnode-0.3.0/awnode/tools/notebooks.py +139 -0
  34. awnode-0.3.0/awnode/tools/ollama.py +129 -0
  35. awnode-0.3.0/awnode/tools/orchestrator.py +171 -0
  36. awnode-0.3.0/awnode/tools/search.py +330 -0
  37. awnode-0.3.0/dist_validate/aithernode-0.1.0-py3-none-any.whl +0 -0
  38. awnode-0.3.0/docker-entrypoint.sh +26 -0
  39. awnode-0.3.0/packaging/aithernode-stub/README.md +23 -0
  40. awnode-0.3.0/packaging/aithernode-stub/pyproject.toml +43 -0
  41. awnode-0.3.0/pyproject.toml +55 -0
  42. awnode-0.3.0/tests/test_chat_endpoint_auth.py +225 -0
  43. awnode-0.3.0/tests/test_mcp_server_auth.py +124 -0
  44. awnode-0.3.0/tests/test_proxy_plane.py +411 -0
  45. awnode-0.3.0/tests/test_server_security_hardening.py +332 -0
@@ -0,0 +1 @@
1
+ awnode/.pybuild/
@@ -0,0 +1,44 @@
1
+ FROM python:3.12-slim
2
+
3
+ LABEL org.opencontainers.image.title="awnode" \
4
+ org.opencontainers.image.description="Lightweight local gateway and MCP server for AitherOS" \
5
+ org.opencontainers.image.vendor="Aitherium" \
6
+ org.opencontainers.image.url="https://aitherium.com" \
7
+ org.opencontainers.image.source="https://github.com/Aitherium/aither" \
8
+ org.opencontainers.image.licenses="MIT"
9
+
10
+ ENV PYTHONDONTWRITEBYTECODE=1 \
11
+ PYTHONUNBUFFERED=1 \
12
+ AITHERNODE_PORT=8090
13
+
14
+ WORKDIR /app
15
+
16
+ RUN apt-get update && apt-get install -y --no-install-recommends \
17
+ curl \
18
+ ca-certificates \
19
+ openssh-server \
20
+ && rm -rf /var/lib/apt/lists/*
21
+
22
+ # Cloud-GPU providers (Vast.ai --ssh --direct, etc.) require the box to be
23
+ # SSH-reachable once running. Root login via key only — no password auth.
24
+ RUN sed -i \
25
+ -e 's/^#\?PermitRootLogin.*/PermitRootLogin yes/' \
26
+ -e 's/^#\?PubkeyAuthentication.*/PubkeyAuthentication yes/' \
27
+ -e 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' \
28
+ /etc/ssh/sshd_config
29
+
30
+ COPY awnode/README.md awnode/pyproject.toml ./
31
+ COPY awnode/awnode ./awnode
32
+ COPY awnode/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
33
+ RUN chmod +x /usr/local/bin/docker-entrypoint.sh
34
+
35
+ RUN python -m pip install --upgrade pip \
36
+ && pip install --no-cache-dir .
37
+
38
+ EXPOSE 8090 22
39
+
40
+ HEALTHCHECK --interval=30s --timeout=5s --start-period=15s --retries=3 \
41
+ CMD curl -fsS http://127.0.0.1:${AITHERNODE_PORT}/health || exit 1
42
+
43
+ ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh", "awnode"]
44
+ CMD ["start", "--host", "0.0.0.0", "--port", "8090"]
awnode-0.3.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Aitherium
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.
awnode-0.3.0/PKG-INFO ADDED
@@ -0,0 +1,98 @@
1
+ Metadata-Version: 2.5
2
+ Name: awnode
3
+ Version: 0.3.0
4
+ Summary: AwNode — lightweight local gateway for AitherOS
5
+ Project-URL: Homepage, https://aitherium.com
6
+ Author-email: Aitherium <hello@aitherium.com>
7
+ License-Expression: MIT
8
+ License-File: LICENSE
9
+ Keywords: agents,ai,aitheros,gateway,mcp
10
+ Requires-Python: >=3.10
11
+ Requires-Dist: awdk>=1.3.0
12
+ Requires-Dist: fastapi>=0.109.0
13
+ Requires-Dist: httpx>=0.26.0
14
+ Requires-Dist: mcp<2.0.0,>=1.0.0
15
+ Requires-Dist: pyyaml>=6.0
16
+ Requires-Dist: uvicorn[standard]>=0.27.0
17
+ Provides-Extra: all
18
+ Requires-Dist: ollama>=0.1.0; extra == 'all'
19
+ Requires-Dist: starlette>=0.27.0; extra == 'all'
20
+ Provides-Extra: ollama
21
+ Requires-Dist: ollama>=0.1.0; extra == 'ollama'
22
+ Provides-Extra: sse
23
+ Requires-Dist: starlette>=0.27.0; extra == 'sse'
24
+ Description-Content-Type: text/markdown
25
+
26
+ # AwNode
27
+
28
+ Lightweight local gateway for AitherOS. Bridges your local apps to AI backends.
29
+
30
+ ## Install
31
+
32
+ ```bash
33
+ pip install awnode
34
+ # container image:
35
+ docker pull ghcr.io/aitherium/awnode:latest
36
+
37
+ # or full stack:
38
+ curl -fsSL https://launch.aitherium.com | bash
39
+ ```
40
+
41
+ ## Quick Start
42
+
43
+ ```bash
44
+ # Start with auto-detection (finds Genesis, vLLM, Ollama, or cloud)
45
+ awnode start
46
+
47
+ # Run the published container
48
+ docker run --rm -p 8090:8090 ghcr.io/aitherium/awnode:latest
49
+
50
+ # Force specific backend
51
+ awnode start --vllm-url http://localhost:8120
52
+ awnode start --cloud
53
+ awnode start --local
54
+
55
+ # Check what's connected
56
+ awnode status
57
+
58
+ # Connect to Elysium cloud
59
+ awnode connect aither_sk_live_xxxxx
60
+
61
+ # Deploy via AitherComet
62
+ awnode deploy my-service --target docker --strategy rolling
63
+ ```
64
+
65
+ ## Backend Priority (auto mode)
66
+
67
+ 1. **Genesis** (localhost:8001) — full AitherOS pipeline (context, memory, agents)
68
+ 2. **vLLM** (localhost:8120) — direct GPU inference (OpenAI-compatible)
69
+ 3. **Elysium** (cloud) — hosted AitherOS (requires API key)
70
+ 4. **Ollama** (localhost:11434) — local CPU/GPU inference
71
+ 5. **Standalone** — no LLM, tools-only mode
72
+
73
+ ## API
74
+
75
+ ```
76
+ GET /health — Health check
77
+ GET /status — Backend status (what's connected)
78
+ POST /chat — Chat (proxied to best backend)
79
+ POST /deploy — Deploy via AitherComet
80
+ POST /connect — Register with Elysium
81
+ ```
82
+
83
+ ## Environment Variables
84
+
85
+ | Variable | Default | Description |
86
+ |---|---|---|
87
+ | `AITHER_URL` | `http://localhost:8001` | Genesis URL |
88
+ | `AITHER_VLLM_URL` | `http://localhost:8120` | vLLM URL |
89
+ | `OLLAMA_HOST` | `http://localhost:11434` | Ollama URL |
90
+ | `AITHER_API_KEY` | | API key for cloud/auth |
91
+ | `AITHERNODE_MODE` | `auto` | Force mode: auto/local/cloud/standalone |
92
+ | `AITHERNODE_PORT` | `8090` | Server port |
93
+
94
+ ## Release Channels
95
+
96
+ - PyPI: `pip install awnode`
97
+ - Container: `ghcr.io/aitherium/awnode`
98
+ - Source tags: `awnode-v*`
awnode-0.3.0/README.md ADDED
@@ -0,0 +1,73 @@
1
+ # AwNode
2
+
3
+ Lightweight local gateway for AitherOS. Bridges your local apps to AI backends.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ pip install awnode
9
+ # container image:
10
+ docker pull ghcr.io/aitherium/awnode:latest
11
+
12
+ # or full stack:
13
+ curl -fsSL https://launch.aitherium.com | bash
14
+ ```
15
+
16
+ ## Quick Start
17
+
18
+ ```bash
19
+ # Start with auto-detection (finds Genesis, vLLM, Ollama, or cloud)
20
+ awnode start
21
+
22
+ # Run the published container
23
+ docker run --rm -p 8090:8090 ghcr.io/aitherium/awnode:latest
24
+
25
+ # Force specific backend
26
+ awnode start --vllm-url http://localhost:8120
27
+ awnode start --cloud
28
+ awnode start --local
29
+
30
+ # Check what's connected
31
+ awnode status
32
+
33
+ # Connect to Elysium cloud
34
+ awnode connect aither_sk_live_xxxxx
35
+
36
+ # Deploy via AitherComet
37
+ awnode deploy my-service --target docker --strategy rolling
38
+ ```
39
+
40
+ ## Backend Priority (auto mode)
41
+
42
+ 1. **Genesis** (localhost:8001) — full AitherOS pipeline (context, memory, agents)
43
+ 2. **vLLM** (localhost:8120) — direct GPU inference (OpenAI-compatible)
44
+ 3. **Elysium** (cloud) — hosted AitherOS (requires API key)
45
+ 4. **Ollama** (localhost:11434) — local CPU/GPU inference
46
+ 5. **Standalone** — no LLM, tools-only mode
47
+
48
+ ## API
49
+
50
+ ```
51
+ GET /health — Health check
52
+ GET /status — Backend status (what's connected)
53
+ POST /chat — Chat (proxied to best backend)
54
+ POST /deploy — Deploy via AitherComet
55
+ POST /connect — Register with Elysium
56
+ ```
57
+
58
+ ## Environment Variables
59
+
60
+ | Variable | Default | Description |
61
+ |---|---|---|
62
+ | `AITHER_URL` | `http://localhost:8001` | Genesis URL |
63
+ | `AITHER_VLLM_URL` | `http://localhost:8120` | vLLM URL |
64
+ | `OLLAMA_HOST` | `http://localhost:11434` | Ollama URL |
65
+ | `AITHER_API_KEY` | | API key for cloud/auth |
66
+ | `AITHERNODE_MODE` | `auto` | Force mode: auto/local/cloud/standalone |
67
+ | `AITHERNODE_PORT` | `8090` | Server port |
68
+
69
+ ## Release Channels
70
+
71
+ - PyPI: `pip install awnode`
72
+ - Container: `ghcr.io/aitherium/awnode`
73
+ - Source tags: `awnode-v*`
@@ -0,0 +1,12 @@
1
+ import sys, traceback
2
+ try:
3
+ import awnode
4
+ print("SMOKE_IMPORT: OK")
5
+ print("VERSION:", getattr(awnode, "__version__", "<missing>"))
6
+ from awnode.cli import main
7
+ print("CLI_MAIN_CALLABLE:", callable(main))
8
+ except Exception as e:
9
+ print("SMOKE_IMPORT: FAIL")
10
+ print(type(e).__name__, e)
11
+ traceback.print_exc()
12
+ sys.exit(1)
@@ -0,0 +1,20 @@
1
+ """
2
+ AwNode — Lightweight Local Gateway for AitherOS
3
+ ====================================================
4
+
5
+ The bridge between local apps (Shell, Desktop, Connect) and AitherOS services.
6
+
7
+ Modes:
8
+ 1. **Local Genesis** — proxy to localhost:8001 (full AitherOS Docker stack)
9
+ 2. **Cloud** — proxy to mcp.aitherium.com (SaaS inference + MCP tools)
10
+ 3. **Standalone** — local Ollama + basic tools (no Genesis needed)
11
+ 4. **Hybrid** — local tools + cloud LLM (best of both)
12
+
13
+ Install:
14
+ pip install awnode
15
+ awnode start # Start on port 8090
16
+ awnode start --cloud # Connect to Elysium
17
+ awnode status # Check what's connected
18
+ """
19
+
20
+ __version__ = "0.3.0"
@@ -0,0 +1,6 @@
1
+ """Allow `python -m awnode` (used by the persistent-service installers)."""
2
+
3
+ from awnode.cli import main
4
+
5
+ if __name__ == "__main__":
6
+ main()