node package manager



Stability: 1 - Experimental

NPM version

Tiny Actor Run-Time in JavaScript behavior sandbox.


Tart behavior sandbox.


To run the below example run:

npm run readme
"use strict";
var fs = require('fs');
var path = require('path');
var tart = require('tart');
var vm = require('../index.js');
var sponsor = tart.minimal();
var ok = sponsor(function okBeh(behavior) {
    var foo = this.sponsor(behavior);
    this.behavior = function printMsg(message) {
        console.log('got message:', message);
var ok2 = sponsor(function okBeh(behaviors) {
    var bar = this.sponsor(behaviors.barBeh);
    var baz = this.sponsor(behaviors.bazBeh);
    this.behavior = function printMsg(message) {
        console.log('got message:', message);
var moduleString = fs.readFileSync(
        path.normalize(path.join(__dirname, 'module.js')));
var module2String = fs.readFileSync(
        path.normalize(path.join(__dirname, 'module2.js')));
var sandbox = sponsor(vm.sandboxBeh);
sandbox({ok: ok, module: moduleString});
sandbox({ok: ok2, module: module2String});


npm test


Public API


Actor behavior that will sandbox behaviors in the module and return them to ok actor.

Message format:

  • fail: Actor function (error) {} Optional actor to receive any errors.
  • module: String Module that exports behaviors using module.exports or exports.
  • ok: Actor function (response) {} Actor to receive created sandboxed behaviors.

Module is a Node.js-like module, except that the only thing available in the global environment is module or exports. Any behavior should be attached to either module.exports or exports. If a single behavior (a function) is exported, that behavior will be sent to ok actor. If module.exports or exports is an object, each key of that object will be treated as a behavior name and the value of that key will be assumed to be a behavior.

For example, given following module:

module.exports = function fooBeh(customer) {

vm.sandboxBeh will return fooBeh to ok actor.

Given following module:

var behaviors = module.exports = {}; = function fooBeh(customer) {
}; = function barBeh(customer) {

vm.sandboxBeh will return an object to ok actor that is structured like:

    foo: fooBeh,
    bar: barBeh