diff --git a/bin/keysigner b/bin/keysigner
index f8b0e0585a63054d5a7dd34528507ebc46fb1870..4e7ab7aadfdbf46949eb12b6f316fa9d66082464 100755
--- a/bin/keysigner
+++ b/bin/keysigner
@@ -84,8 +84,11 @@ app.use(function(req, resp, next) {
 // parse POST bodies
 app.use(express.bodyParser());
 
-// allocate a compute cluster
 try {
+  // explicitly relay VAR_PATH to children
+  process.env['VAR_PATH'] = config.get('var_path');
+
+  // allocate a compute cluster
   var cc = new computecluster({
     module: path.join(__dirname, "..", "lib", "keysigner", "subprocess.js"),
     max_processes: config.get('max_compute_processes')
diff --git a/lib/configuration.js b/lib/configuration.js
index d24973ca479d17fc60ee2c6874c2c21aeacbc0fd..d154c038bcd0ae010cd856ce1039d17dc4173045 100644
--- a/lib/configuration.js
+++ b/lib/configuration.js
@@ -213,6 +213,11 @@ if (process.env['MAX_COMPUTE_PROCESSES']) {
   g_config.max_compute_processes = parseInt(process.env['MAX_COMPUTE_PROCESSES']);
 }
 
+// allow var_path to be specified in the environment
+if (process.env['VAR_PATH']) {
+  g_config.var_path = process.env['VAR_PATH'];
+}
+
 // what host/port shall we bind to?
 g_config.bind_to = {
   host: process.env['IP_ADDRESS'] || process.env['HOST'] || "127.0.0.1",
diff --git a/package.json b/package.json
index c4f284eb973fcb1c125d855fc82d3d862ea086aa..e5c68016807dd49932f83c0aba6d352d50acf4ed 100644
--- a/package.json
+++ b/package.json
@@ -32,7 +32,7 @@
     , "node-statsd": "https://github.com/mojodna/node-statsd/tarball/2584c08fad"
     , "connect-logger-statsd": "0.0.1"
     , "semver": "1.0.12"
-    , "compute-cluster": "0.0.2"
+    , "compute-cluster": "0.0.4"
   }
   , "scripts": {
     "postinstall": "./scripts/generate_ephemeral_keys.sh",