SmalltalkGenie ported to VAST Platform

23 views
Skip to first unread message

Dusty

unread,
Jun 28, 2026, 12:10:29 PM (9 days ago) Jun 28
to VAST Community Forum
This was fun. I got the eval working and then got claude to use that to do the rest (with  my guidence). Let me know if anything is missing.

I've ported Kent Beck's SmalltalkGenie (originally Pharo) to VAST. It's an MCP server that lives inside a VAST image and speaks the Model Context Protocol directly over HTTP, so an AI agent (e.g. Claude Code) can drive the image — define/edit/rename/remove classes and methods, run tests, search the system, import/export applications, and save the image — all by remote control.

Rebuilt on VAST/ENVY internals: HTTP via SstHttpServletEngine (no Teapot/Zinc), eval via EsCompiler, JSON via NeoJSON, and "package" mapped to an ENVY application (export/import includes sub-applications). Loopback-bound by default, with an Origin check, optional bearer-token auth, and dangerous-tool gating. It auto-restarts on image startup.

24 tools: eval, define_class, define_method, rename_class, remove_class, remove_method, run_test, save_image, get_settings, apply_settings, export_package, import_package, list_packages, list_classes, list_methods, list_extended_classes, get_class_source, get_method_source, get_class_comment, search_classes_like, search_methods_like, search_implementors, search_references, search_references_to_class.

Not ported (no VAST equivalent): search_traits_like (VAST has no traits) and install_project (Metacello — use import_package instead).

Repo: https://github.com/riverdusty/SmalltalkGenie

Load it:

  • Make sure these are loaded: SstHttpServletSupport, SUnit, NeoJSON, and Tonel Support.
  • Load the Genie application from the Tonel source/ tree (Configuration Maps Browser → load from the cloned repo, or the Tonel loader).
  • Start it: GenieServer current — serves http://localhost:8088/mcp.
  • Point your MCP client at it, e.g. claude mcp add --transport http genie-vast http://localhost:8088/mcp.
⚠️ eval runs arbitrary code — run it only on a machine and image you trust.
Reply all
Reply to author
Forward
0 new messages