Skip to content
Merged
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
84 changes: 84 additions & 0 deletions .github/workflows/linux-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
name: Linux Release Artifacts

on:
release:
types: [published]
workflow_dispatch:
inputs:
release_tag:
description: "Release tag to upload artifacts to (e.g. v2.4.0)"
required: true
default: "v2.4.0"

jobs:
build-linux:
name: Build AppImage + .deb
runs-on: ubuntu-22.04

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Python 3.10
uses: actions/setup-python@v5
with:
python-version: "3.10"

- name: Install build tools
run: |
python -m pip install --upgrade pip
pip install build setuptools wheel

- name: Install app dependencies
run: pip install -r requirements.txt

- name: Build Python wheel
run: python -m build --wheel --no-isolation

- name: Install AppImage + .deb prerequisites
run: |
sudo apt-get update -qq
sudo apt-get install -y wget fuse libfuse2 dpkg-dev

- name: Build AppImage
run: |
bash linux/appimage/build_appimage.sh \
--wheel dist/vibrante_node-*.whl

- name: Build .deb package
run: |
bash linux/deb/build_deb.sh \
--wheel dist/vibrante_node-*.whl

- name: Resolve release tag
id: tag
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
echo "value=${{ github.event.inputs.release_tag }}" >> $GITHUB_OUTPUT
else
echo "value=${{ github.ref_name }}" >> $GITHUB_OUTPUT
fi

- name: Upload AppImage
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release upload "${{ steps.tag.outputs.value }}" \
linux/build/Vibrante-Node-*-x86_64.AppImage \
--clobber

- name: Upload .deb
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release upload "${{ steps.tag.outputs.value }}" \
linux/build/vibrante-node_*.deb \
--clobber

- name: Upload wheel
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release upload "${{ steps.tag.outputs.value }}" \
dist/vibrante_node-*.whl \
--clobber
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -50,3 +50,9 @@ linux/build/
# Runtime logs
crash.log
upload_result.json

# Cached MCP / package dependencies (local dev only)
.mcp_deps/

# Temporary orchestration run reports
tmp/
67 changes: 67 additions & 0 deletions workflows/hou_mcp_scene_context_demo.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
{
"nodes": [
{
"instance_id": "d538ca27-24a2-4786-b480-a88328ed5306",
"node_id": "hou_mcp_scene_context",
"position": [-280.0, -80.0],
"parameters": {
"exec_in": null,
"exec_out": true,
"include_selection": true,
"include_assets": true,
"include_render": true,
"force_refresh": false,
"context": {},
"context_json": "",
"scene": {},
"networks": {},
"selection": []
},
"state": "idle"
},
{
"instance_id": "ce864ced-6172-4611-b522-0409084628ba",
"node_id": "console_print",
"position": [220.0, -80.0],
"parameters": {
"exec_in": null,
"exec_out": true,
"data": "",
"out": ""
},
"state": "idle"
}
],
"connections": [
{
"id": "ecc29f87-2a4d-476c-a69d-54d2ca541999",
"from_node": "d538ca27-24a2-4786-b480-a88328ed5306",
"from_port": "exec_out",
"to_node": "ce864ced-6172-4611-b522-0409084628ba",
"to_port": "exec_in",
"is_exec": true
},
{
"id": "8b2f1c32-98f3-4a01-aa71-4166aa31786d",
"from_node": "d538ca27-24a2-4786-b480-a88328ed5306",
"from_port": "context_json",
"to_node": "ce864ced-6172-4611-b522-0409084628ba",
"to_port": "data",
"is_exec": false
}
],
"sticky_notes": [
{
"id": "d86cbc0b-8fd2-4d8c-babd-be6fbae395e2",
"position": [-280.0, -210.0],
"size": [680.0, 110.0],
"text": "Demo: aggregate the live Houdini scene state via the runtime layer and print the JSON-serialised context.\n\nPrereqs: Vibrante-Node was launched from Houdini (the bridge is reachable). The output is shape-stable JSON — feed it directly into an LLM prompt.\n\nToggle force_refresh on the scene_context node to bypass the 5-second cache.",
"color": "#ffffcc"
}
],
"backdrops": [],
"metadata": {
"name": "Houdini MCP: Scene Context Demo",
"description": "Tier 1 smoke graph for the AI-oriented scene context node."
}
}
90 changes: 90 additions & 0 deletions workflows/mcp_list_tools_demo.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
{
"nodes": [
{
"instance_id": "2ee17392-cacb-4e57-92ab-d2817996c8a6",
"node_id": "mcp_server_init",
"position": [-360.0, -80.0],
"parameters": {
"exec_in": null,
"exec_out": true,
"server_name": "everything",
"transport_type": "stdio",
"command": "npx",
"args": "-y, @modelcontextprotocol/server-everything",
"env_json": "",
"url": "",
"connected": false,
"server_info": {},
"capabilities": {}
},
"state": "idle"
},
{
"instance_id": "8ed659c6-c027-431a-942b-f7e1f0459d6a",
"node_id": "mcp_list_tools",
"position": [40.0, -80.0],
"parameters": {
"exec_in": null,
"exec_out": true,
"server_name": "everything",
"tools": [],
"names": [],
"schemas": [],
"count": 0
},
"state": "idle"
},
{
"instance_id": "12f93d2e-59c7-482c-ae5b-f3fa7305a33c",
"node_id": "console_print",
"position": [400.0, -80.0],
"parameters": {
"exec_in": null,
"exec_out": true,
"data": "",
"out": ""
},
"state": "idle"
}
],
"connections": [
{
"id": "dc90adad-04a3-492a-9360-cd7f42b08697",
"from_node": "2ee17392-cacb-4e57-92ab-d2817996c8a6",
"from_port": "exec_out",
"to_node": "8ed659c6-c027-431a-942b-f7e1f0459d6a",
"to_port": "exec_in",
"is_exec": true
},
{
"id": "32b30ae5-c747-4f24-adb7-70f159ba08c6",
"from_node": "8ed659c6-c027-431a-942b-f7e1f0459d6a",
"from_port": "exec_out",
"to_node": "12f93d2e-59c7-482c-ae5b-f3fa7305a33c",
"to_port": "exec_in",
"is_exec": true
},
{
"id": "9cbfd9da-6465-4d8d-9e70-80782509dd96",
"from_node": "8ed659c6-c027-431a-942b-f7e1f0459d6a",
"from_port": "names",
"to_node": "12f93d2e-59c7-482c-ae5b-f3fa7305a33c",
"to_port": "data",
"is_exec": false
}
],
"sticky_notes": [
{
"id": "6a8b449a-2dd5-4393-96db-5ec3dbf91a9c",
"position": [-360.0, -200.0],
"size": [820.0, 90.0],
"text": "Demo: connect to the reference MCP server (npx @modelcontextprotocol/server-everything), list its tools, then print their names.\n\nPrereqs: Node.js with npx on PATH, mcp Python package installed (pip install mcp). The first run will download the server package on demand.",
"color": "#ffffcc"
}
],
"backdrops": [],
"metadata": {
"name": "MCP: List Tools Demo",
"description": "Tier 1 smoke graph for the generic MCP client nodes."
}
}
Loading