Skip to content

Port vncli from vecnode: pure-Rust researcher CLI - #1

Merged
vecnode merged 8 commits into
mainfrom
port-vncli-from-vecnode
Jul 12, 2026
Merged

Port vncli from vecnode: pure-Rust researcher CLI#1
vecnode merged 8 commits into
mainfrom
port-vncli-from-vecnode

Conversation

@vecnode

@vecnode vecnode commented Jul 12, 2026

Copy link
Copy Markdown
Owner

Summary

  • Ports the vn CLI/TUI, Docker-managed research-app runtime, git/system/network tooling, and Ollama+MCP integration from the private vecnode source repo into this public vncli repo.
  • Rebrands app-identity strings (tray title, MCP server name, AI system prompt, status bar, env var VNCLI_REPO_ROOT, container/image names) from vecnode to vncli; vecnode is kept only as author attribution (Cargo.toml, LICENSE, README).
  • download_all_repos.* / download_all_orgs.* now require an explicit username/org instead of defaulting to a specific account.
  • Adds distribute_cli.bat, which builds a release binary and packages a relocatable, prebuilt copy of the CLI to the Desktop (verified end-to-end).
  • Adds a public README.md with install/feature docs and language/license badges.
  • Ports CI (ubuntu-latest + windows-latest matrix: fmt, clippy, build, test, cargo-deny, cargo-audit).

Test plan

  • cargo build --manifest-path cli/Cargo.toml -p vn
  • cargo test --manifest-path cli/Cargo.toml -p vn (7 passed)
  • cargo clippy --manifest-path cli/Cargo.toml -p vn --all-targets -- -D warnings
  • Ran distribute_cli.bat, launched the packaged vn.exe --version/--help, confirmed output, cleaned up test artifact
  • CI green on both OS (will confirm once this PR runs)

🤖 Generated with Claude Code

vecnode and others added 8 commits July 12, 2026 14:29
… distribute_cli.bat

Ports the vn CLI/TUI, Docker-managed app runtime, git/system/network tooling,
and Ollama+MCP integration into this public repo, with app-identity strings
rebranded from vecnode to vncli (vecnode kept only as author attribution).
GitHub download scripts now require an explicit username/org instead of
defaulting to a specific account. Adds distribute_cli.bat to package a
relocatable, prebuilt copy of the CLI, and a public README with badges.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…hema

cargo fmt --check was failing on rustfmt drift inherited from the source
repo. cargo-deny (via EmbarkStudios/cargo-deny-action@v2, unpinned) now
resolves a newer cargo-deny release whose config schema dropped
vulnerability/unsound/notice as advisories fields, db-path/db-urls under
[licenses], and the deny/copyleft/allow-osi-fsf-free/default fields there
too - licenses are now purely an allow-list. Updated deny.toml accordingly.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The custom db-urls pointed at a raw db.toml.gz snapshot format current
cargo-deny doesn't fetch that way, causing a metadata-parse crash in CI.
Falling back to cargo-deny's built-in default (git clone of
rustsec/advisory-db) instead.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- vn crate was missing a license field; add license = "MIT" to match the
  workspace license.
- Bump anyhow 1.0.102 -> 1.0.103 (fixes RUSTSEC-2026-0190, an
  Error::downcast_mut unsoundness) and crossbeam-epoch 0.9.18 -> 0.9.20
  (fixes RUSTSEC-2026-0204, an invalid pointer deref in fmt::Pointer);
  both are transitive deps pulled to exactly their patched versions.
- openssl is banned but still reachable transitively via ollama-rs's own
  reqwest dependency (it doesn't disable reqwest's default-tls feature,
  and Cargo's feature unification pulls that into our single resolved
  reqwest even though our direct dependency is rustls-only and is the
  only TLS path our own code uses). Allow it only when reached through
  native-tls so an unrelated new openssl dependency would still be caught.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…lama-rs

webpki-roots ships CA cert data under CDLA-Permissive-2.0 (data license,
not code) - add it to the allow-list. ollama-rs's published Cargo.toml
omits a license field even though its repo's LICENSE.md is MIT; add a
clarify entry (hash is a placeholder, to be corrected from CI's report).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
option-ext (a small dirs-sys dependency) is MPL-2.0, which unlike
GPL/AGPL only applies copyleft at the file level and is broadly
considered safe to depend on without copyleft obligations on our own code.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…e input

rustsec/audit-check@v2's actual inputs are token/ignore/working-directory
(no file input - that was carried over from the older actions-rs/audit-check
action this config was likely modeled on). The unrecognized file: input was
silently ignored, so it defaulted to repo root and couldn't find Cargo.lock
under cli/.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Remote memory exhaustion via unbounded out-of-order stream reassembly,
patched at >=0.11.15. quinn-proto is a transitive dep (rmcp's
transport-streamable-http-server -> quinn stack). paste (unmaintained)
and lru (unsound) advisories remain but are informational-only per
cargo-audit's default config and don't fail the check.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@vecnode
vecnode merged commit 135bb2f into main Jul 12, 2026
3 checks passed
@vecnode
vecnode deleted the port-vncli-from-vecnode branch July 12, 2026 15:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant