diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -174,6 +174,7 @@
     'ArcanistUploadWorkflow' => 'workflow/ArcanistUploadWorkflow.php',
     'ArcanistUsageException' => 'exception/ArcanistUsageException.php',
     'ArcanistUserAbortException' => 'exception/usage/ArcanistUserAbortException.php',
+    'ArcanistVersionWorkflow' => 'workflow/ArcanistVersionWorkflow.php',
     'ArcanistWhichWorkflow' => 'workflow/ArcanistWhichWorkflow.php',
     'ArcanistWorkingCopyIdentity' => 'workingcopyidentity/ArcanistWorkingCopyIdentity.php',
     'ArcanistXHPASTLintNamingHook' => 'lint/linter/xhpast/ArcanistXHPASTLintNamingHook.php',
@@ -337,6 +338,7 @@
     'ArcanistUploadWorkflow' => 'ArcanistBaseWorkflow',
     'ArcanistUsageException' => 'Exception',
     'ArcanistUserAbortException' => 'ArcanistUsageException',
+    'ArcanistVersionWorkflow' => 'ArcanistBaseWorkflow',
     'ArcanistWhichWorkflow' => 'ArcanistBaseWorkflow',
     'ArcanistXHPASTLintNamingHookTestCase' => 'ArcanistTestCase',
     'ArcanistXHPASTLintTestSwitchHook' => 'ArcanistXHPASTLintSwitchHook',
diff --git a/src/workflow/ArcanistVersionWorkflow.php b/src/workflow/ArcanistVersionWorkflow.php
new file mode 100644
--- /dev/null
+++ b/src/workflow/ArcanistVersionWorkflow.php
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * Display the current version of Arcanist.
+ */
+final class ArcanistVersionWorkflow extends ArcanistBaseWorkflow {
+
+  public function getWorkflowName() {
+    return 'version';
+  }
+
+  public function getCommandSynopses() {
+    return phutil_console_format(<<<EOTEXT
+      **version** [__options__]
+EOTEXT
+      );
+  }
+
+  public function getCommandHelp() {
+    return phutil_console_format(pht(<<<EOTEXT
+          Supports: cli
+          Shows the current version of arcanist.
+EOTEXT
+      ));
+  }
+
+  public function run() {
+    $console = PhutilConsole::getConsole();
+
+    if (!Filesystem::binaryExists('git')) {
+      throw new ArcanistUsageException(
+        'Cannot display current version without having `git` installed.');
+    }
+
+    $roots = array(
+      'arcanist' => dirname(phutil_get_library_root('arcanist')),
+      'libphutil' => dirname(phutil_get_library_root('phutil')),
+    );
+
+    foreach ($roots as $lib => $root) {
+      $working_copy = ArcanistWorkingCopyIdentity::newFromPath($root);
+      $configuration_manager = clone $this->getConfigurationManager();
+      $configuration_manager->setWorkingCopyIdentity($working_copy);
+      $repository = ArcanistRepositoryAPI::newAPIFromConfigurationManager(
+        $configuration_manager);
+
+      if (!Filesystem::pathExists($repository->getMetadataPath())) {
+        throw new ArcanistUsageException("{$lib} is not a git working copy.");
+      }
+
+      list($stdout) = $repository->execxLocal('log -1 --format=%s', '%H %ct');
+      list($commit, $timestamp) = explode(' ', $stdout);
+
+      $console->writeOut("%s %s (%s)\n",
+        $lib,
+        $commit,
+        date('j M Y', (int)$timestamp));
+    }
+  }
+
+}