Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .cursor-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -687,6 +687,11 @@
"grokbot": "0.49.0",
"sand": "0.49.0"
}
},
{
"name": "tensorviz",
"source": "third_party/tensorviz",
"description": "Explore local PyTorch model graphs and measured tensor shapes (Apple Silicon preview)."
}
]
}
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ Official Cursor plugins for popular developer tools, frameworks, and SaaS produc
| `rippling` | [Rippling](third_party/rippling/) | Cursor | Integrations | Look up people, time off, and company policy in Rippling, and file time-off requests and draft hires. |
| `onepay` | [OnePay](third_party/onepay/) | Cursor | Integrations | Access your OnePay accounts: balances, transactions, credit, Pay Later, investments, crypto, and rewards. |
| `questrade` | [Questrade](third_party/questrade/) | Cursor | Integrations | Read your Questrade portfolio, get live market data, and discuss potential trades. |
| `tensorviz` | [tensorViz](third_party/tensorviz/) | TensorViz | Developer Tools | Explore local PyTorch model graphs and measured tensor shapes (Apple Silicon preview). |
Author values match each plugin’s `plugin.json` `author.name` (Cursor lists `plugins@cursor.com` in the manifest).

## Repository structure
Expand Down
31 changes: 31 additions & 0 deletions third_party/tensorviz/.cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"name": "tensorviz",
"displayName": "tensorViz",
"version": "0.3.61",
"description": "Explore local PyTorch model graphs and measured tensor shapes (Apple Silicon preview).",
"author": {
"name": "TensorViz",
"email": "tensorviz.app@gmail.com"
},
"homepage": "https://tensorviz.dev",
"repository": "https://github.com/tensorviz-org/tensorviz-plugins",
"license": "MIT",
"logo": "assets/logo.png",
"keywords": [
"pytorch",
"tensorviz",
"model-graph",
"tensor-shapes",
"machine-learning",
"mcp"
],
"category": "developer-tools",
"tags": [
"pytorch",
"visualization",
"debugging",
"mcp"
],
"skills": "./skills/",
"mcpServers": "./mcp.json"
}
16 changes: 16 additions & 0 deletions third_party/tensorviz/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Changelog

## 0.3.61

- Update the submission to the compiled runtime built from current source main
`d4e2865a3c43149907dd06840745eb037d55dffa`.
- Include the current 27-tool host, with `find_computation`, `query_computation`,
and `analyze_computation_change`, and pin its matching runtime checksum.

## 0.3.60

- Submit the existing public tensorViz 0.3.60 integration to the Cursor catalog.
- Include the local MCP launcher, pinned compiled-runtime lock, workflow skill,
logo, license, privacy, terms, support, and Cursor installation guide.
- Target the macOS Apple Silicon / CPython 3.12 CPU preview; marketplace approval
and Cursor client acceptance remain separate.
21 changes: 21 additions & 0 deletions third_party/tensorviz/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2026 TensorViz contributors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
28 changes: 28 additions & 0 deletions third_party/tensorviz/PRIVACY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Privacy and data handling

TensorViz's agent plugin runs a local MCP host and Python workers. Discovery reads
model source. Capturing executes the selected model with the selected environment
and example inputs. Approved setup can write recipes and download Python runtimes
or packages from their providers. Imported model code and dependencies can have
their own filesystem and network behavior.

Graph evidence, source excerpts, paths and errors returned through MCP are visible
to the coding client and can enter its model-provider conversation. The client's
privacy, retention and organization policies apply. Do not provide sensitive models
or data unless those policies permit it.

The plugin does not operate a TensorViz cloud ingestion service, and its browser
and panel builds exclude TensorViz's hosted authentication and analytics modules.
The browser viewer uses a local connection. Keep private viewer links private.
The tldraw renderer has separate license-validation behavior; trial licenses can
send license-usage information to tldraw. See
[tldraw's licensing and data collection documentation](https://tldraw.dev/community/license).

Model recipes and captures, local session resources, runtime installations and
permission records can remain on disk. Removing the plugin does not delete model
source, recipes or Python environments. Run the installed plugin's
`scripts/launch.sh --revoke-permission` to revoke TensorViz permission, or disable
the plugin in your coding client. See [installation and removal](docs/installation.md).

Do not post private model code, credentials, full environment dumps or private
viewer URLs in public issues. See [SUPPORT.md](SUPPORT.md) for reporting problems.
63 changes: 63 additions & 0 deletions third_party/tensorviz/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# tensorViz

Explore local PyTorch model graphs and measured tensor shapes (Apple Silicon preview).

The plugin connects Cursor to a local tensorViz MCP host and supplies the
`model-workflow` skill. Capture a PyTorch `nn.Module`, inspect the measured input
and output shapes, and refresh the graph after a saved source edit. Use the local
browser graph when the client does not support the embedded Model graph panel.

## Requirements

- macOS on Apple Silicon, with CPU capture.
- CPython 3.12 with PyTorch and your model's dependencies, or supported managed
Python setup after permission is granted.
- Network access for the first runtime download and any approved dependency setup.
- Cursor with plugins enabled. Account, organization, and tool permissions apply.

This compiled preview does not support Windows, Linux, Intel Macs, or other Python
ABIs. CUDA is unverified. VS Code, a separate Node.js installation, a tensorViz
account, and a provider API key are not required by tensorViz.

## Install and use

Once approved and listed, open **Customize**, find **tensorViz**, and select
**Install**. Until then, use the [local evaluation instructions](docs/installation.md).
Start a new Agent chat in your model project and ask:

> Use tensorViz to open my PyTorch model, capture its saved example input, and
> explain the tensor shapes. Show the graph, then refresh it after my saved edit.

Provide the model file, class, constructor arguments, and example inputs when
needed. Review tensorViz's first-use permission prompt: capture executes your
local model code, and approved setup can install Python and dependencies.
Select a compatible project environment when requested. Saved `tensorviz.toml`
recipes can be reused; model-specific packages and assets may still need setup.

A successful capture contains measured shapes for the selected input and
execution. A source preview alone does not establish a successful capture.
Graph display and capture are separate results.

## Runtime and data

The readable launcher downloads the public **0.3.61** compiled runtime from GitHub
Releases, verifies the SHA-256 digest pinned in `runtime-lock.json`, and caches the
archive for later connections. It checks the archive on every connection and
extracts separate session files. A checksum mismatch stops startup. This directory
contains the integration; the runtime is downloaded separately.

Graph evidence, source excerpts, and paths returned through MCP enter Cursor and
may enter its model-provider conversation. Recipes, captures, environments,
runtime caches, and permission records stay on the local machine until removed.
Approved Python setup contacts package providers; imported model code can use its
own services. The tldraw renderer's production trial can send license-usage
information to tldraw, excluding canvas content. See [privacy](PRIVACY.md).

The bundled renderer trial expires **26 December 2026**. Continued renderer use
requires a renewed license and an updated runtime; existing downloads retain
their original embedded key. See [terms](TERMS.md).

See [installation, updates, and removal](docs/installation.md),
[support](SUPPORT.md), [the public integration repository](https://github.com/tensorviz-org/tensorviz-plugins),
and [tensorviz.dev](https://tensorviz.dev). The integration is [MIT licensed](LICENSE);
runtime components retain their applicable terms and notices.
17 changes: 17 additions & 0 deletions third_party/tensorviz/SUPPORT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Support and compatibility

This compiled candidate targets macOS Apple Silicon and CPython 3.12 CPU capture.
It does not require VS Code or Node.js. Explicitly selected incompatible Python
versions produce an error; TensorViz does not silently replace that environment.
Windows, Linux, Intel Macs, CUDA and other Python ABIs remain unverified targets.

The integration works with clients that support its local MCP transport and
plugin format. Directory publication is distinct from local installation, capture
and rendering. No official marketplace acceptance is claimed for this candidate.

When reporting a problem, include the integration version, OS/client version,
whether it failed during download, startup or capture, and a small synthetic
model. Do not share credentials, private viewer links, model secrets or unredacted
environment dumps. Use
[the integration repository's issues](https://github.com/tensorviz-org/tensorviz-plugins/issues)
for public, non-sensitive bug reports.
22 changes: 22 additions & 0 deletions third_party/tensorviz/TERMS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Terms and third-party components

The integration files in this repository carry the accompanying MIT license.
The core runtime is distributed separately as compiled artifacts; this repository
does not publish its source or change the licensing of existing core code.
Runtime distribution terms and third-party notices must accompany its release.

Public runtime releases require the owner's confirmation that the tldraw license
covers the bundled renderer supplied to end users. Private build candidates are
not permission to redistribute the renderer. The integration's MIT license does not
grant a tldraw production or redistribution license. Dependencies retain their
original licenses and the binary includes their applicable notices.

The initial preview uses a production trial of tldraw that expires on
26 December 2026. Continued renderer use after the trial requires a renewed license
and an updated TensorViz runtime. Downloaded versions retain their embedded key;
renewal does not retroactively update old installations.

Your coding client, model provider, downloaded packages and model repositories
have their own terms. Capturing runs selected model code locally. A graph records
one selected execution or an explicitly identified source preview; it does not
guarantee model correctness or behavior for other inputs.
Binary file added third_party/tensorviz/assets/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
82 changes: 82 additions & 0 deletions third_party/tensorviz/docs/installation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# Cursor installation and maintenance

This entry packages the public
[tensorViz 0.3.61 preview](https://github.com/tensorviz-org/tensorviz-plugins/releases/tag/v0.3.61)
for Cursor. It requires macOS Apple Silicon and CPython 3.12 CPU capture. Local
installation, package validation, runtime checks, and marketplace approval are
separate results. This submission does not claim completed Cursor client
acceptance or an approved marketplace listing.

## Local evaluation

1. Copy this complete `third_party/tensorviz` directory to
`~/.cursor/plugins/local/tensorviz`. The destination must directly contain
`.cursor-plugin/plugin.json`, `mcp.json`, `runtime-lock.json`, `scripts/`,
`skills/`, and `assets/`. Copy regular files rather than a symlink.
2. Restart Cursor or run **Developer: Reload Window**.
3. Open **Customize** and confirm the `model-workflow` skill and tensorViz MCP
server. Your account or organization must allow local plugin imports. A
marketplace installation of the same name takes precedence over a local copy.
4. Start a new Agent chat in your model project and use the prompt in the
[README](../README.md). Complete the permission and environment prompts.

The MCP configuration uses `${CURSOR_PLUGIN_ROOT}/scripts/launch.sh`. Cursor
expands that variable to this plugin's installed directory. No Node.js command
or global Python executable is used to start the compiled host.

## Updates, removal, and troubleshooting

For marketplace installations, use Cursor's plugin management to update, disable,
or uninstall tensorViz. Start a new chat after an update; the runtime remains
pinned to this entry's version until its lock and integration are updated together.

For a local evaluation update, close tensorViz chats, move the old complete plugin
directory outside `~/.cursor/plugins/local`, and copy the new complete directory
into place. Reload Cursor and start a new chat. Restore the old complete directory
for rollback; do not combine files from different versions.

If download fails, check access to the URL in `runtime-lock.json` and reconnect.
The verified archive is cached under `~/Library/Caches/dev.tensorviz/runtime`.
A checksum error names the damaged archive: remove only that archive and
reconnect to download it again. Do not bypass checksum verification.

To remove a local evaluation, close its chats, remove only
`~/.cursor/plugins/local/tensorviz`, and reload Cursor. Removal preserves model
source, recipes, Python environments, cached runtimes, and saved permission.
Before removal, run the installed plugin's `scripts/launch.sh --revoke-permission`
if you want to revoke tensorViz permission. See [privacy](../PRIVACY.md).

## Provenance and review scope

The launcher, runtime lock, workflow skill, logo, support, and terms were copied
from public tag `v0.3.61`, commit
`d01630d9e9d6e453b1ef6f7786b7dd77b2601bed` of
[`tensorviz-org/tensorviz-plugins`](https://github.com/tensorviz-org/tensorviz-plugins/tree/v0.3.61/cursor/plugins/tensorviz).
Their hashes were checked against that release's `PUBLICATION.json`. The MIT
license is copied from the distribution repository. The privacy document changes
only its installation link to this guide.

The Cursor manifest uses this marketplace's supported author fields, adds display
and discovery metadata, and keeps the release version and component paths. This
entry also adds the catalog registration, README, changelog, and this guide. It
does not include the other clients' manifests or a compiled runtime archive.

Local submission checks on 3 November 2026 passed the repository's
`node scripts/validate-plugins.mjs` validator, launcher shell syntax, catalog and
manifest consistency, documentation links, and copied-file hash checks. An
isolated macOS Apple Silicon profile launched the configured MCP command from a
path containing spaces, downloaded the runtime without GitHub credentials, and
verified its 35,773,473-byte archive against the pinned SHA-256 digest. MCP
initialization reported tensorViz 0.3.61 and discovery returned 27 tools, including
`open_graph`, `open_graph_view`, `find_computation`, `query_computation`, and
`analyze_computation_change`. All three computation queries returned `NO_MODEL`
for an unopened model without creating user state. No model ran and no tensorViz
permission was granted. These checks did not run the Cursor application.

For client acceptance, verify skill/tool discovery, a small CPU model capture,
measured shapes, visible graph display, refresh after an edit, and an update with
retained setup. A manifest check or a direct MCP connection alone cannot establish
those Cursor behaviors.

References: [Cursor plugin format and MCP paths](https://cursor.com/docs/reference/plugins),
[local plugin imports](https://cursor.com/docs/plugins#test-plugins-locally).
12 changes: 12 additions & 0 deletions third_party/tensorviz/mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
"mcpServers": {
"tensorviz": {
"type": "stdio",
"command": "sh",
"args": [
"${CURSOR_PLUGIN_ROOT}/scripts/launch.sh"
]
}
}
}
9 changes: 9 additions & 0 deletions third_party/tensorviz/runtime-lock.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"formatVersion": 1,
"version": "0.3.61",
"platform": "darwin-arm64",
"pythonABI": "cpython-312-darwin",
"sha256": "c6d4a606f45d880ed2967a16059a9130cfc46111e913d91dc808c7ac32341430",
"bytes": 35773473,
"url": "https://github.com/tensorviz-org/tensorviz-plugins/releases/download/v0.3.61/tensorviz-runtime-0.3.61-darwin-arm64.tar.gz"
}
60 changes: 60 additions & 0 deletions third_party/tensorviz/scripts/launch.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
#!/bin/sh
# Public integration only. Core code arrives as a version-pinned binary archive.
set -eu
umask 077
fail() { echo "TensorViz: $*" >&2; exit 1; }
plugin=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd -P)
if [ "$(uname -s)-$(uname -m)" != Darwin-arm64 ]; then
fail 'This preview supports macOS Apple Silicon. No runtime was downloaded.'
fi
lock="$plugin/runtime-lock.json"
version=$(/usr/bin/plutil -extract version raw -o - "$lock")
sha=$(/usr/bin/plutil -extract sha256 raw -o - "$lock")
url=$(/usr/bin/plutil -extract url raw -o - "$lock")
bytes=$(/usr/bin/plutil -extract bytes raw -o - "$lock")
case "$sha" in *[!a-f0-9]*|'') fail 'Invalid runtime digest.';; esac
[ "${#sha}" -eq 64 ] || fail 'Invalid runtime digest.'
case "$bytes" in *[!0-9]*|'') fail 'Invalid runtime size.';; esac
case "$url" in https://*) ;; *) fail 'Runtime downloads require HTTPS.';; esac
cache="${HOME:?}/Library/Caches/dev.tensorviz/runtime"
mkdir -p "$cache"
[ ! -L "$cache" ] || fail 'The runtime cache must not be a symbolic link.'
archive="$cache/$sha.tar.gz"
download=''
session=''
child=''
cleanup() {
if [ -n "$child" ]; then kill "$child" 2>/dev/null || true; wait "$child" 2>/dev/null || true; fi
[ -z "$download" ] || rm -f -- "$download"
[ -z "$session" ] || rm -rf -- "$session"
}
trap cleanup 0
trap 'exit 130' INT
trap 'exit 143' TERM HUP
if [ ! -f "$archive" ]; then
download=$(mktemp "$cache/.download.XXXXXX")
echo "TensorViz: downloading runtime $version for reuse by later connections." >&2
/usr/bin/curl --fail --silent --show-error --location --proto '=https' --proto-redir '=https' \
--connect-timeout 15 --max-time 300 --max-filesize "$bytes" --output "$download" "$url" < /dev/null &
child=$!
wait "$child" || fail 'Runtime download failed. Retry the plugin connection.'
child=''
[ "$(/usr/bin/shasum -a 256 "$download" | cut -d ' ' -f 1)" = "$sha" ] \
|| fail 'Runtime checksum mismatch. Nothing was executed.'
mv -f -- "$download" "$archive"
download=''
fi
[ ! -L "$archive" ] || fail 'The cached archive must not be a symbolic link.'
[ "$(/usr/bin/shasum -a 256 "$archive" | cut -d ' ' -f 1)" = "$sha" ] \
|| fail "Cached runtime is damaged. Remove $archive and reconnect. Nothing was executed."
# Extract anew from the verified archive, so modified unpacked caches cannot run.
session=$(mktemp -d "${TMPDIR:-/tmp}/tensorviz-native.XXXXXX")
/usr/bin/tar -xzf "$archive" -C "$session"
[ -x "$session/tensorviz-host" ] || fail 'Runtime archive has no executable host.'
"$session/tensorviz-host" "$@" <&0 &
child=$!
set +e
wait "$child"
status=$?
child=''
exit "$status"
Loading