diff --git a/memory/vmomap.py b/memory/vmomap.py
new file mode 100755
index 0000000..a7429cf
--- /dev/null
+++ b/memory/vmomap.py
@@ -0,0 +1,84 @@
+#!/usr/bin/env python
+#
+# Copyright 2017 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""Visualizes the VMO/process graph from Magenta's "memgraph" tool.
+
+Run "vmomap.py --help" for a list of arguments.
+
+For usage, see magenta/docs/memory.md
+"""
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+import json
+import sys
+
+
+class DirectedEdge(object):
+    """A generic directed edge in a directed graph."""
+
+    def __init__(self, head, tail):
+        """Creates a directed edge from the head to the tail.
+
+        Args:
+            head: the DagNode at the head (origin) of the edge
+            tail: the DagNode at the tail (destination) of the edge
+        """
+        self.head = head
+        self.tail = tail
+
+
+class DirectedNode(object):
+    """A generic node in a directed graph."""
+
+    def __init__(self, name, area=0):
+        """Creates a named node.
+
+        Args:
+            name: human-readable name of the node
+            area: a numeric size for the node; typically maps to memory size
+        """
+        #xxx unique id? or our parent container has it as a key?
+        #DirectedGraph.AddNode(id, name, area)
+        self.name = name
+        self.area = area
+        self.edges_in = []  #xxx set?
+        self.edges_out = []  #xxx set?
+        self.labels = set() # strings
+
+
+def build_vmo_proc_graph(dataset):
+    for record in dataset:
+        record_type = record['type']
+        if record_type != 'p':
+            continue
+
+
+def main():
+    dataset = json.load(sys.stdin)
+    # we only care about vmos and processes, but jobs help group
+    # can label each node with the spheres it's in (job-job-process)
+    # no nodes for jobs per se, unless we want the name
+    # ignore jobs at first
+
+    # start with clusters of vmos that have the same set of processes
+    # pointing to them.
+    # Ignore handle vs. mapping at first, though could add that to
+    # the process label on the vmo
+
+    # process node, vmo node
+    # edge labels on vmos; backlinks on processes
+    #  edges have via (mapping, handle+rights)
+
+    # also have clone tree
+    #  parent/child edges
+    # ignore this at first, too
+
+
+if __name__ == '__main__':
+    main()
