Skip to content

lachlanchen/AgInTi-LabCanvas

Repository files navigation

English · العربية · Español · Français · 日本語 · 한국어 · Tiếng Việt · 中文 (简体) · 中文(繁體) · Deutsch · Русский

LazyingArt banner

Homepage Tests npm package target Python MCP

AgInTi LabCanvas

Editable scientific figure and experiment-design studio for agent workflows.
Chat, preview, decompose, route, and rebuild paper figures through Blender, OpenSCAD, BioRender, AgInTi, KiCad, Unity, Unreal, and MCP-style tool bridges.

Donate PayPal Stripe
Donate PayPal Stripe

AgInTi LabCanvas showing a V-SPICE chat task with a Blender-rendered experiment setup in the canvas

What It Does

AgInTi LabCanvas is a small local control plane for agent-assisted scientific visuals and app automation. It keeps generated figures editable: an overview image can start an idea, but final outputs are rebuilt from atomic parts, scene specs, CAD files, manifests, and tool-specific artifacts.

Current Highlights

Area What is ready Entry point
Web studio Chat, bright UI, artifact canvas, backend settings, multilingual UI labcanvas web --port 8787 --open
Paper figures Exact NxM SVG grids, AgInTi image dry-run payloads, editable artifact manifest docs/EDITABLE_FIGURE_PIPELINE.md
3D setup renders JSON scene specs to Blender PNG and .blend output docs/SCENE_SPEC.md
CAD devices OpenSCAD exports and C-mount reflector adapter CAD cad/README.md
Board/CAD tasks Shared CLI and web-chat workflow for KiCad, OpenSCAD, renders, and manufacturing prep docs/BOARD_CAD_TASKS.md
PCB manufacturing KiCad HYBEC and Lumileds boards, DRC/ERC, JLCPCB Gerber ZIPs pcb
LabVIEW automation Linux install probe, MCP candidate research, stdio-to-HTTP bridge agentic_tools/labview_mcp_agent
Android control Dedicated noVNC/scrcpy desktop and ADB wrapper for the Mi MIX 2S real device plus matching AVD profile docs/ANDROID_DEVICE_CONTROL.md
WeChat chatops Isolated Linux GUI, direct local message mirror, fast ACK agent, strict per-chat media isolation, AgInTi figure generation plus CAD/PCB/Blender worker queue, file/PDF/render return docs/WECHAT_AUTOMATION.md, full control manual, robust operations
LALACHAN video handoff Story drafting, Xiaoyunque browser generation, MP4 download, repo/Nutstore copy, and LazyEdit permission gates for WeChat workers references/lalachan-story-video-handoff-for-wechat.md
Video publish handoff Agents resolve exact videos and context, then delegate subtitle correction, metadata, logo/subtitle burn, packaging, and public posting to LazyEdit/AutoPublish references/lazyedit-agent-integration-handoff.md
App routing Blender, BioRender, Unity, Unreal, and custom target dispatch docs/RESEARCH.md

Quick Start

Run from a source checkout:

PYTHONPATH=src python -m agenticapp list
PYTHONPATH=src python -m agenticapp doctor
PYTHONPATH=src python -m agenticapp web --port 8787 --open
PYTHONPATH=src python -m agenticapp studio figure-grid "optical device icons 2x3" --rows 2 --cols 3
PYTHONPATH=src python -m agenticapp studio lab-task "prepare Lumileds no-resistor PCB and C-mount reflector CAD"
PYTHONPATH=src python -m unittest discover -s tests

The npm package has been renamed in this repository to @lazyingart/labcanvas, with labcanvas as the primary CLI and app-auto-action / agenticapp kept as compatibility aliases. The new npm package still needs a fresh authenticated publish; until then, use the source checkout or the previously published package name.

# After the renamed npm package is published:
npm install -g @lazyingart/labcanvas
labcanvas --version
labcanvas webapp start --port 19473

Studio Workflow

  1. Start with chat or a saved JSON scene spec.
  2. Generate overview concepts through AgInTi image payloads or another image backend.
  3. Split the figure into editable atoms: panels, icons, labels, CAD parts, renders, and TeX assembly layers.
  4. Use BioRender for academic assets, OpenSCAD for mechanical layout, Blender for 3D setup renders, and KiCad for PCB artifacts.
  5. Keep every artifact in the canvas manifest so later chat edits can target one part instead of flattening the whole figure.

Example Commands

labcanvas scene-template experiment-setup --output my-setup.scene.json
labcanvas render-scene my-setup.scene.json --dry-run
labcanvas render-scene my-setup.scene.json --output-dir output/scenes
labcanvas studio openscad examples/paper-optics-setup.scene.json
labcanvas studio lab-task "prepare Lumileds no-resistor PCB and C-mount reflector CAD"
labcanvas studio lab-task "prepare Lumileds no-resistor PCB" --mode pcb --execute
labcanvas studio dispatch blender "Prepare an editable paper figure setup"
labcanvas wechat worker --chat "懒人科研" enqueue "Use AgInTi image generation to make a 2x3 microscopy icon figure"
labcanvas wechat worker --chat "懒人科研" enqueue "Use LabCanvas to render the Lumileds PCB and C-mount CAD preview"
labcanvas wechat status
labcanvas wechat hold start
labcanvas wechat stack start --web-port 19474
agentic_tools/android_device_agent/scripts/android_device_desktop.sh start --serial <MIX2S_SERIAL>
agentic_tools/android_device_agent/scripts/android_control.py status --serial <MIX2S_SERIAL>

For a local Blender bridge test:

scripts/install_blender_portable.sh
labcanvas --config configs/blender-local-command.example.json doctor
labcanvas --config configs/blender-local-command.example.json dispatch blender "Draw a welcoming modern building with a tower"

Architecture

Agent / MCP client / CLI / web chat
        |
        | dry-run, render, export, dispatch
        v
AgInTi LabCanvas
        |
        | target registry + artifact manifest
        v
Blender · OpenSCAD · BioRender · AgInTi · KiCad · LabVIEW · Unity · Unreal

Every target dispatch receives a reviewable JSON envelope:

{
  "target": "blender",
  "kind": "blender",
  "instruction": "Create a red cube at the origin",
  "payload": {},
  "metadata": {
    "source": "labcanvas"
  }
}

Copy configs/targets.example.json to labcanvas.targets.json for local ports, commands, and tokens. This override file is ignored by git.

Validation

npm test
npm run pack:dry-run
PYTHONPATH=src python -m agenticapp doctor

Keep transport behavior covered by tests before adding live editor features. Review SECURITY.md before enabling live dispatch to editor bridges or browser sessions.