edgecrab-cli 0.1.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.
@@ -0,0 +1,121 @@
1
+ Metadata-Version: 2.4
2
+ Name: edgecrab-cli
3
+ Version: 0.1.0
4
+ Summary: EdgeCrab CLI — Super Powerful Personal Assistant inspired by NousHermes and OpenClaw. Single static binary, blazing-fast TUI, multi-provider LLM.
5
+ License: MIT
6
+ Project-URL: Homepage, https://www.edgecrab.com
7
+ Project-URL: Repository, https://github.com/raphaelmansuy/edgecrab
8
+ Project-URL: Documentation, https://www.edgecrab.com
9
+ Keywords: ai,agent,llm,edgecrab,coding-agent,personal-assistant,cli,nous-hermes,openclaw
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.10
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Topic :: Software Development :: Libraries
19
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
20
+ Classifier: Environment :: Console
21
+ Requires-Python: >=3.10
22
+ Description-Content-Type: text/markdown
23
+ Requires-Dist: httpx<1,>=0.27.0
24
+ Provides-Extra: dev
25
+ Requires-Dist: pytest<9,>=8.0; extra == "dev"
26
+
27
+ # edgecrab-cli (PyPI)
28
+
29
+ > **EdgeCrab** — Super Powerful Personal Assistant inspired by **NousHermes** and **OpenClaw**.
30
+ > Blazing-fast TUI · ReAct tool loop · Multi-provider LLM · ACP protocol · Single 15 MB static binary.
31
+
32
+ [![PyPI](https://img.shields.io/pypi/v/edgecrab-cli.svg)](https://pypi.org/project/edgecrab-cli/)
33
+ [![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/raphaelmansuy/edgecrab/blob/main/LICENSE)
34
+
35
+ ---
36
+
37
+ ## Installation
38
+
39
+ ```bash
40
+ pip install edgecrab-cli
41
+ ```
42
+
43
+ On first run, the package automatically downloads the correct pre-built Rust binary for
44
+ your platform (macOS arm64/x64, Linux x64/arm64, Windows x64) from
45
+ [GitHub Releases](https://github.com/raphaelmansuy/edgecrab/releases).
46
+
47
+ No Rust, GCC, or build tools are required.
48
+
49
+ ---
50
+
51
+ ## Quick Start
52
+
53
+ ```bash
54
+ # First-run setup wizard — detects API keys, writes ~/.edgecrab/config.yaml
55
+ edgecrab setup
56
+
57
+ # Verify your environment
58
+ edgecrab doctor
59
+
60
+ # Start the interactive TUI
61
+ edgecrab
62
+
63
+ # One-shot query (pipe-friendly)
64
+ edgecrab "summarise the git log for today"
65
+
66
+ # Pick a specific LLM provider
67
+ edgecrab --model anthropic/claude-opus-4 "explain this codebase"
68
+
69
+ # Quiet / pipe mode
70
+ edgecrab --quiet "write a Rust hello-world"
71
+ ```
72
+
73
+ ---
74
+
75
+ ## Why EdgeCrab?
76
+
77
+ EdgeCrab is a **Rust-native** autonomous coding agent and personal assistant, inspired by
78
+ the reasoning depth of **NousHermes** and the tool-use power of **OpenClaw**.
79
+
80
+ | Feature | Detail |
81
+ |---------|--------|
82
+ | **Single binary** | 15 MB static binary, < 50 ms startup, ~15 MB resident memory |
83
+ | **Multi-provider LLM** | Copilot · OpenAI · Anthropic · Gemini · xAI · DeepSeek · Ollama |
84
+ | **ReAct tool loop** | File, terminal, web search, memory, process, skill tools |
85
+ | **ratatui TUI** | 60 fps capable terminal UI with streaming output |
86
+ | **ACP protocol** | Built-in JSON-RPC 2.0 stdio adapter for VS Code Copilot |
87
+ | **Built-in security** | Path safety, SSRF protection, command scanning, output redaction |
88
+
89
+ ---
90
+
91
+ ## Supported Providers
92
+
93
+ `copilot` · `openai` · `anthropic` · `gemini` · `xai` · `deepseek` · `huggingface` · `zai` · `openrouter` · `ollama` · `lmstudio`
94
+
95
+ ---
96
+
97
+ ## Alternative Installation Methods
98
+
99
+ | Method | Command |
100
+ |--------|---------|
101
+ | **PyPI** | `pip install edgecrab-cli` |
102
+ | **npm** | `npm install -g edgecrab-cli` |
103
+ | **Cargo** | `cargo install edgecrab-cli` |
104
+ | **Docker** | `docker pull ghcr.io/raphaelmansuy/edgecrab:latest` |
105
+ | **Pre-built binary** | [GitHub Releases](https://github.com/raphaelmansuy/edgecrab/releases) |
106
+
107
+ ---
108
+
109
+ ## Documentation
110
+
111
+ Full docs: **[edgecrab.com](https://www.edgecrab.com)**
112
+
113
+ - [Quick Start](https://www.edgecrab.com/getting-started/quick-start/)
114
+ - [Installation Guide](https://www.edgecrab.com/getting-started/installation/)
115
+ - [CLI Commands Reference](https://www.edgecrab.com/reference/cli-commands/)
116
+
117
+ ---
118
+
119
+ ## License
120
+
121
+ MIT © [Raphael Mansuy](https://github.com/raphaelmansuy)
@@ -0,0 +1,95 @@
1
+ # edgecrab-cli (PyPI)
2
+
3
+ > **EdgeCrab** — Super Powerful Personal Assistant inspired by **NousHermes** and **OpenClaw**.
4
+ > Blazing-fast TUI · ReAct tool loop · Multi-provider LLM · ACP protocol · Single 15 MB static binary.
5
+
6
+ [![PyPI](https://img.shields.io/pypi/v/edgecrab-cli.svg)](https://pypi.org/project/edgecrab-cli/)
7
+ [![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/raphaelmansuy/edgecrab/blob/main/LICENSE)
8
+
9
+ ---
10
+
11
+ ## Installation
12
+
13
+ ```bash
14
+ pip install edgecrab-cli
15
+ ```
16
+
17
+ On first run, the package automatically downloads the correct pre-built Rust binary for
18
+ your platform (macOS arm64/x64, Linux x64/arm64, Windows x64) from
19
+ [GitHub Releases](https://github.com/raphaelmansuy/edgecrab/releases).
20
+
21
+ No Rust, GCC, or build tools are required.
22
+
23
+ ---
24
+
25
+ ## Quick Start
26
+
27
+ ```bash
28
+ # First-run setup wizard — detects API keys, writes ~/.edgecrab/config.yaml
29
+ edgecrab setup
30
+
31
+ # Verify your environment
32
+ edgecrab doctor
33
+
34
+ # Start the interactive TUI
35
+ edgecrab
36
+
37
+ # One-shot query (pipe-friendly)
38
+ edgecrab "summarise the git log for today"
39
+
40
+ # Pick a specific LLM provider
41
+ edgecrab --model anthropic/claude-opus-4 "explain this codebase"
42
+
43
+ # Quiet / pipe mode
44
+ edgecrab --quiet "write a Rust hello-world"
45
+ ```
46
+
47
+ ---
48
+
49
+ ## Why EdgeCrab?
50
+
51
+ EdgeCrab is a **Rust-native** autonomous coding agent and personal assistant, inspired by
52
+ the reasoning depth of **NousHermes** and the tool-use power of **OpenClaw**.
53
+
54
+ | Feature | Detail |
55
+ |---------|--------|
56
+ | **Single binary** | 15 MB static binary, < 50 ms startup, ~15 MB resident memory |
57
+ | **Multi-provider LLM** | Copilot · OpenAI · Anthropic · Gemini · xAI · DeepSeek · Ollama |
58
+ | **ReAct tool loop** | File, terminal, web search, memory, process, skill tools |
59
+ | **ratatui TUI** | 60 fps capable terminal UI with streaming output |
60
+ | **ACP protocol** | Built-in JSON-RPC 2.0 stdio adapter for VS Code Copilot |
61
+ | **Built-in security** | Path safety, SSRF protection, command scanning, output redaction |
62
+
63
+ ---
64
+
65
+ ## Supported Providers
66
+
67
+ `copilot` · `openai` · `anthropic` · `gemini` · `xai` · `deepseek` · `huggingface` · `zai` · `openrouter` · `ollama` · `lmstudio`
68
+
69
+ ---
70
+
71
+ ## Alternative Installation Methods
72
+
73
+ | Method | Command |
74
+ |--------|---------|
75
+ | **PyPI** | `pip install edgecrab-cli` |
76
+ | **npm** | `npm install -g edgecrab-cli` |
77
+ | **Cargo** | `cargo install edgecrab-cli` |
78
+ | **Docker** | `docker pull ghcr.io/raphaelmansuy/edgecrab:latest` |
79
+ | **Pre-built binary** | [GitHub Releases](https://github.com/raphaelmansuy/edgecrab/releases) |
80
+
81
+ ---
82
+
83
+ ## Documentation
84
+
85
+ Full docs: **[edgecrab.com](https://www.edgecrab.com)**
86
+
87
+ - [Quick Start](https://www.edgecrab.com/getting-started/quick-start/)
88
+ - [Installation Guide](https://www.edgecrab.com/getting-started/installation/)
89
+ - [CLI Commands Reference](https://www.edgecrab.com/reference/cli-commands/)
90
+
91
+ ---
92
+
93
+ ## License
94
+
95
+ MIT © [Raphael Mansuy](https://github.com/raphaelmansuy)
@@ -0,0 +1,5 @@
1
+ """edgecrab_cli — Python package that downloads and runs the EdgeCrab native binary."""
2
+
3
+ from edgecrab_cli._version import __version__
4
+
5
+ __all__ = ["__version__"]
@@ -0,0 +1,139 @@
1
+ """
2
+ Binary downloader and resolver for edgecrab-cli.
3
+
4
+ Downloads the correct pre-built Rust binary for the current platform from
5
+ GitHub Releases on first use, caches it in the package directory, and
6
+ provides a resolve() helper to get the absolute path.
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ import os
12
+ import platform
13
+ import shutil
14
+ import stat
15
+ import sys
16
+ import tarfile
17
+ import tempfile
18
+ import zipfile
19
+ from pathlib import Path
20
+
21
+ import httpx
22
+
23
+ from edgecrab_cli._version import __version__
24
+
25
+ REPO = "raphaelmansuy/edgecrab"
26
+
27
+ # ── Platform → asset name mapping ────────────────────────────────────────────
28
+ _PLATFORM_MAP: dict[tuple[str, str], str] = {
29
+ ("darwin", "arm64"): "edgecrab-aarch64-apple-darwin.tar.gz",
30
+ ("darwin", "x86_64"): "edgecrab-x86_64-apple-darwin.tar.gz",
31
+ ("linux", "x86_64"): "edgecrab-x86_64-unknown-linux-gnu.tar.gz",
32
+ ("linux", "aarch64"): "edgecrab-aarch64-unknown-linux-gnu.tar.gz",
33
+ ("linux", "arm64"): "edgecrab-aarch64-unknown-linux-gnu.tar.gz",
34
+ ("windows", "amd64"): "edgecrab-x86_64-pc-windows-msvc.zip",
35
+ ("windows", "x86_64"): "edgecrab-x86_64-pc-windows-msvc.zip",
36
+ }
37
+
38
+ _BIN_NAME = "edgecrab.exe" if sys.platform == "win32" else "edgecrab"
39
+
40
+ # Cache binary alongside this package
41
+ _CACHE_DIR = Path(__file__).parent / "_bin"
42
+
43
+
44
+ def _asset_name() -> str:
45
+ system = sys.platform.lower()
46
+ machine = platform.machine().lower()
47
+ if system.startswith("darwin"):
48
+ key = ("darwin", machine)
49
+ elif system.startswith("linux"):
50
+ key = ("linux", machine)
51
+ elif system.startswith("win"):
52
+ key = ("windows", machine)
53
+ else:
54
+ key = (system, machine)
55
+ asset = _PLATFORM_MAP.get(key)
56
+ if not asset:
57
+ raise RuntimeError(
58
+ f"Unsupported platform: {system}/{machine}. "
59
+ f"Please install from source: cargo install edgecrab-cli"
60
+ )
61
+ return asset
62
+
63
+
64
+ def _download(url: str, dest: Path) -> None:
65
+ print(f"[edgecrab-cli] Downloading binary from {url} …", file=sys.stderr)
66
+ with httpx.stream("GET", url, follow_redirects=True) as resp:
67
+ resp.raise_for_status()
68
+ with open(dest, "wb") as fh:
69
+ for chunk in resp.iter_bytes(chunk_size=65536):
70
+ fh.write(chunk)
71
+
72
+
73
+ def _extract(archive: Path, target_dir: Path) -> None:
74
+ name = archive.name
75
+ if name.endswith(".tar.gz") or name.endswith(".tgz"):
76
+ with tarfile.open(archive, "r:gz") as tf:
77
+ # Extract only the binary (may be at root or in a subdirectory)
78
+ for member in tf.getmembers():
79
+ if Path(member.name).name == _BIN_NAME:
80
+ member.name = _BIN_NAME # flatten
81
+ tf.extract(member, path=target_dir)
82
+ return
83
+ # Fallback: extract everything
84
+ tf.extractall(path=target_dir)
85
+ elif name.endswith(".zip"):
86
+ with zipfile.ZipFile(archive) as zf:
87
+ for info in zf.infolist():
88
+ if Path(info.filename).name == _BIN_NAME:
89
+ info.filename = _BIN_NAME # flatten
90
+ zf.extract(info, path=target_dir)
91
+ return
92
+ zf.extractall(path=target_dir)
93
+ else:
94
+ raise RuntimeError(f"Unknown archive format: {name}")
95
+
96
+
97
+ def ensure_binary() -> Path:
98
+ """Return the path to the edgecrab binary, downloading it if necessary."""
99
+ _CACHE_DIR.mkdir(parents=True, exist_ok=True)
100
+ dest = _CACHE_DIR / _BIN_NAME
101
+
102
+ if dest.exists():
103
+ return dest
104
+
105
+ asset = _asset_name()
106
+ url = f"https://github.com/{REPO}/releases/download/v{__version__}/{asset}"
107
+
108
+ with tempfile.NamedTemporaryFile(suffix=Path(asset).suffix + (".gz" if ".tar." in asset else ""), delete=False) as tmp:
109
+ tmp_path = Path(tmp.name)
110
+
111
+ try:
112
+ _download(url, tmp_path)
113
+ _extract(tmp_path, _CACHE_DIR)
114
+ finally:
115
+ tmp_path.unlink(missing_ok=True)
116
+
117
+ if not dest.exists():
118
+ raise RuntimeError(
119
+ f"Binary {_BIN_NAME} not found in extracted archive. "
120
+ f"Please report this at https://github.com/{REPO}/issues"
121
+ )
122
+
123
+ # Ensure executable
124
+ dest.chmod(dest.stat().st_mode | stat.S_IEXEC | stat.S_IXGRP | stat.S_IXOTH)
125
+ print(f"[edgecrab-cli] Installed to: {dest}", file=sys.stderr)
126
+ return dest
127
+
128
+
129
+ def resolve() -> Path:
130
+ """
131
+ Return the path to the edgecrab binary.
132
+
133
+ First checks for a system-wide `edgecrab` on PATH (e.g. installed via cargo),
134
+ then falls back to the cached downloaded binary.
135
+ """
136
+ system_binary = shutil.which("edgecrab")
137
+ if system_binary:
138
+ return Path(system_binary)
139
+ return ensure_binary()
@@ -0,0 +1,31 @@
1
+ """Entry point for `edgecrab` console script installed by edgecrab-cli on PyPI."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import os
6
+ import sys
7
+
8
+
9
+ def main() -> None:
10
+ """Resolve the native binary and exec it with all CLI arguments."""
11
+ from edgecrab_cli._binary import resolve
12
+
13
+ try:
14
+ binary = resolve()
15
+ except RuntimeError as exc:
16
+ print(f"[edgecrab-cli] {exc}", file=sys.stderr)
17
+ sys.exit(1)
18
+
19
+ # Replace the current process with the native binary (Unix) or spawn it (Windows).
20
+ args = [str(binary)] + sys.argv[1:]
21
+
22
+ if os.name == "nt":
23
+ import subprocess
24
+ result = subprocess.run(args, env=os.environ)
25
+ sys.exit(result.returncode)
26
+ else:
27
+ os.execv(str(binary), args)
28
+
29
+
30
+ if __name__ == "__main__":
31
+ main()
@@ -0,0 +1 @@
1
+ __version__ = "0.1.0"
@@ -0,0 +1,121 @@
1
+ Metadata-Version: 2.4
2
+ Name: edgecrab-cli
3
+ Version: 0.1.0
4
+ Summary: EdgeCrab CLI — Super Powerful Personal Assistant inspired by NousHermes and OpenClaw. Single static binary, blazing-fast TUI, multi-provider LLM.
5
+ License: MIT
6
+ Project-URL: Homepage, https://www.edgecrab.com
7
+ Project-URL: Repository, https://github.com/raphaelmansuy/edgecrab
8
+ Project-URL: Documentation, https://www.edgecrab.com
9
+ Keywords: ai,agent,llm,edgecrab,coding-agent,personal-assistant,cli,nous-hermes,openclaw
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.10
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Topic :: Software Development :: Libraries
19
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
20
+ Classifier: Environment :: Console
21
+ Requires-Python: >=3.10
22
+ Description-Content-Type: text/markdown
23
+ Requires-Dist: httpx<1,>=0.27.0
24
+ Provides-Extra: dev
25
+ Requires-Dist: pytest<9,>=8.0; extra == "dev"
26
+
27
+ # edgecrab-cli (PyPI)
28
+
29
+ > **EdgeCrab** — Super Powerful Personal Assistant inspired by **NousHermes** and **OpenClaw**.
30
+ > Blazing-fast TUI · ReAct tool loop · Multi-provider LLM · ACP protocol · Single 15 MB static binary.
31
+
32
+ [![PyPI](https://img.shields.io/pypi/v/edgecrab-cli.svg)](https://pypi.org/project/edgecrab-cli/)
33
+ [![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/raphaelmansuy/edgecrab/blob/main/LICENSE)
34
+
35
+ ---
36
+
37
+ ## Installation
38
+
39
+ ```bash
40
+ pip install edgecrab-cli
41
+ ```
42
+
43
+ On first run, the package automatically downloads the correct pre-built Rust binary for
44
+ your platform (macOS arm64/x64, Linux x64/arm64, Windows x64) from
45
+ [GitHub Releases](https://github.com/raphaelmansuy/edgecrab/releases).
46
+
47
+ No Rust, GCC, or build tools are required.
48
+
49
+ ---
50
+
51
+ ## Quick Start
52
+
53
+ ```bash
54
+ # First-run setup wizard — detects API keys, writes ~/.edgecrab/config.yaml
55
+ edgecrab setup
56
+
57
+ # Verify your environment
58
+ edgecrab doctor
59
+
60
+ # Start the interactive TUI
61
+ edgecrab
62
+
63
+ # One-shot query (pipe-friendly)
64
+ edgecrab "summarise the git log for today"
65
+
66
+ # Pick a specific LLM provider
67
+ edgecrab --model anthropic/claude-opus-4 "explain this codebase"
68
+
69
+ # Quiet / pipe mode
70
+ edgecrab --quiet "write a Rust hello-world"
71
+ ```
72
+
73
+ ---
74
+
75
+ ## Why EdgeCrab?
76
+
77
+ EdgeCrab is a **Rust-native** autonomous coding agent and personal assistant, inspired by
78
+ the reasoning depth of **NousHermes** and the tool-use power of **OpenClaw**.
79
+
80
+ | Feature | Detail |
81
+ |---------|--------|
82
+ | **Single binary** | 15 MB static binary, < 50 ms startup, ~15 MB resident memory |
83
+ | **Multi-provider LLM** | Copilot · OpenAI · Anthropic · Gemini · xAI · DeepSeek · Ollama |
84
+ | **ReAct tool loop** | File, terminal, web search, memory, process, skill tools |
85
+ | **ratatui TUI** | 60 fps capable terminal UI with streaming output |
86
+ | **ACP protocol** | Built-in JSON-RPC 2.0 stdio adapter for VS Code Copilot |
87
+ | **Built-in security** | Path safety, SSRF protection, command scanning, output redaction |
88
+
89
+ ---
90
+
91
+ ## Supported Providers
92
+
93
+ `copilot` · `openai` · `anthropic` · `gemini` · `xai` · `deepseek` · `huggingface` · `zai` · `openrouter` · `ollama` · `lmstudio`
94
+
95
+ ---
96
+
97
+ ## Alternative Installation Methods
98
+
99
+ | Method | Command |
100
+ |--------|---------|
101
+ | **PyPI** | `pip install edgecrab-cli` |
102
+ | **npm** | `npm install -g edgecrab-cli` |
103
+ | **Cargo** | `cargo install edgecrab-cli` |
104
+ | **Docker** | `docker pull ghcr.io/raphaelmansuy/edgecrab:latest` |
105
+ | **Pre-built binary** | [GitHub Releases](https://github.com/raphaelmansuy/edgecrab/releases) |
106
+
107
+ ---
108
+
109
+ ## Documentation
110
+
111
+ Full docs: **[edgecrab.com](https://www.edgecrab.com)**
112
+
113
+ - [Quick Start](https://www.edgecrab.com/getting-started/quick-start/)
114
+ - [Installation Guide](https://www.edgecrab.com/getting-started/installation/)
115
+ - [CLI Commands Reference](https://www.edgecrab.com/reference/cli-commands/)
116
+
117
+ ---
118
+
119
+ ## License
120
+
121
+ MIT © [Raphael Mansuy](https://github.com/raphaelmansuy)
@@ -0,0 +1,12 @@
1
+ README.md
2
+ pyproject.toml
3
+ edgecrab_cli/__init__.py
4
+ edgecrab_cli/_binary.py
5
+ edgecrab_cli/_entry.py
6
+ edgecrab_cli/_version.py
7
+ edgecrab_cli.egg-info/PKG-INFO
8
+ edgecrab_cli.egg-info/SOURCES.txt
9
+ edgecrab_cli.egg-info/dependency_links.txt
10
+ edgecrab_cli.egg-info/entry_points.txt
11
+ edgecrab_cli.egg-info/requires.txt
12
+ edgecrab_cli.egg-info/top_level.txt
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ edgecrab = edgecrab_cli._entry:main
@@ -0,0 +1,4 @@
1
+ httpx<1,>=0.27.0
2
+
3
+ [dev]
4
+ pytest<9,>=8.0
@@ -0,0 +1 @@
1
+ edgecrab_cli
@@ -0,0 +1,48 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61.0"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "edgecrab-cli"
7
+ version = "0.1.0"
8
+ requires-python = ">=3.10"
9
+ readme = "README.md"
10
+ license = { text = "MIT" }
11
+ classifiers = [
12
+ "Development Status :: 4 - Beta",
13
+ "Intended Audience :: Developers",
14
+ "License :: OSI Approved :: MIT License",
15
+ "Programming Language :: Python :: 3",
16
+ "Programming Language :: Python :: 3.10",
17
+ "Programming Language :: Python :: 3.11",
18
+ "Programming Language :: Python :: 3.12",
19
+ "Programming Language :: Python :: 3.13",
20
+ "Topic :: Software Development :: Libraries",
21
+ "Topic :: Scientific/Engineering :: Artificial Intelligence",
22
+ "Environment :: Console",
23
+ ]
24
+ keywords = ["ai", "agent", "llm", "edgecrab", "coding-agent", "personal-assistant", "cli", "nous-hermes", "openclaw"]
25
+ description = "EdgeCrab CLI — Super Powerful Personal Assistant inspired by NousHermes and OpenClaw. Single static binary, blazing-fast TUI, multi-provider LLM."
26
+ dependencies = [
27
+ "httpx>=0.27.0,<1",
28
+ ]
29
+
30
+ [project.optional-dependencies]
31
+ dev = [
32
+ "pytest>=8.0,<9",
33
+ ]
34
+
35
+ [project.urls]
36
+ Homepage = "https://www.edgecrab.com"
37
+ Repository = "https://github.com/raphaelmansuy/edgecrab"
38
+ Documentation = "https://www.edgecrab.com"
39
+
40
+ [project.scripts]
41
+ edgecrab = "edgecrab_cli._entry:main"
42
+
43
+ [tool.setuptools.packages.find]
44
+ where = ["."]
45
+ include = ["edgecrab_cli*"]
46
+
47
+ [tool.pytest.ini_options]
48
+ testpaths = ["tests"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+