diff --git commands/entity/entity.drush.inc commands/entity/entity.drush.inc
new file mode 100644
index 0000000..3925171
--- /dev/null
+++ commands/entity/entity.drush.inc
@@ -0,0 +1,259 @@
+<?php
+
+/**
+ * @file
+ *   Drush support for nodes.
+ */
+
+/**
+ * Implementation of hook_drush_command().
+ */
+function entity_drush_command() {
+  $items = array();
+
+  $items['entity-show'] = array(
+    'description' => "Print entity objects to stdout",
+    'arguments' => array(
+      'nids' => "A list of space-separated entity IDs to print to stdout.",
+    ),
+    'options' => array(
+      'json' => "Output the entity as JSON",
+    ),
+    'examples' => array(
+      'drush entity-show 4' => 'Print the entity object of entity/4 to stdout',
+    ),
+    'aliases' => array('ns'),
+  );
+  $items['entity-create'] = array(
+    'description' => "Create a entity from a json object",
+    'options' => array(
+      'json' => "Output the entity as JSON",
+    ),
+    'examples' => array(
+      'drush entity-show 4 --json | drush entity-create' => 'Copy entity/4 to a new entity.',
+    ),
+    'aliases' => array('nc'),
+  );
+  $items['entity-edit'] = array(
+    'description' => "Edit a entity as json in the default editor",
+    'arguments' => array(
+      'type' => "Entity type",
+      'nids' => "A entity id",
+    ),
+    'examples' => array(
+      'drush entity-edit 4' => 'Edit entity 4 as json in the default editor',
+    ),
+    'aliases' => array('ne'),
+  );
+  $items['entity-delete'] = array(
+    'description' => 'Delete entities.',
+    'arguments' => array(
+      'nid' => 'Entity id to delete',
+    ),
+    'options' => array(
+      '--type' => 'Restrict to a given content-type.',
+    ),
+    'examples' => array(
+      'entity-delete' => '.',
+      'entity-delete 64' => '.',
+      'entity-delete --type=story' => '.',
+    ),
+    'aliases' => array('nd'),
+  );
+
+  return $items;
+}
+
+/**
+ * Implementation of hook_drush_help().
+ *
+ * @param
+ *   A string with the help section (prepend with 'drush:')
+ *
+ * @return
+ *   A string with the help text for your command.
+ */
+function entity_drush_help($section) {
+  switch ($section) {
+  case 'drush:entity-show':
+    return dt("Print entity objects to stdout");
+  case 'drush:entity-create':
+    return dt("Create a entity from a json object");
+  case 'drush:entity-edit':
+    return dt("Edit a entity as json in the default editor");
+  case 'drush:entity-delete':
+    return dt('Delete entities.');
+  }
+}
+
+/**
+ * Drush command callback.
+ *
+ * Show entities.
+ */
+function drush_entity_show($nids) {
+  if (!is_array($nids)) $nids = array($nids);
+  foreach($nids as $nid) {
+    $node = node_load($nid);
+    if (drush_get_option('json')) {
+      drush_print(drush_json_encode($node));
+    }
+    else {
+      $node = drush_json_decode(drush_json_encode($node));
+      drush_print_r($node);
+    }
+  }
+}
+
+/**
+ * Drush command callback.
+ *
+ * Create a node.
+ */
+function drush_entity_create($arg = NULL) {
+  if (empty($arg)) {
+    $node = new stdClass();
+    switch (drush_drupal_major_version()) {
+    case 5:
+    case 6:
+      $node->type = $node->title = $node->body = "";
+      $node->uid = 1;
+      break;
+    case 7:
+      $node->type = $node->title = "";
+      $node->body = array(
+        LANGUAGE_NONE => array(
+          0 => array(
+            'value' => "",
+            'format' => filter_default_format(),
+          ),
+        ),
+      );
+    }
+    $tmp_file = drush_save_data_to_temp_file(drush_json_encode($node));
+    drush_shell_exec_interactive('$EDITOR ' . $tmp_file);
+    $edited_node = file_get_contents($tmp_file, "r");
+
+    node_save((object)drush_json_decode($edited_node, TRUE));
+    return;
+  }
+
+  if ($arg === '-') {
+    $node_json = stream_get_contents(STDIN);
+    if (!empty($node_json)) {
+      $node = (object)drush_json_decode($node_json);
+      if (!empty($node->nid)) {
+        unset($node->nid);
+        unset($node->vid);
+      }
+      node_save($node);
+    }
+    else {
+      drush_set_error('DRUSH_NO_STDIN', dt("stdin empty!"));
+    }
+  }
+}
+
+/**
+ * Drush command callback.
+ *
+ * Show nodes.
+ */
+function drush_entity_edit($entity_type, $id, $field = NULL) {
+  $entities = entity_load($entity_type, array($id));
+  if (isset($entities[$id])) {
+    $entity = $entities[$id];
+    if (!empty($field)) {
+      if (isset($entity->$field)) {
+        $edit_obj = $entity->$field;
+      }
+    }
+    else {
+      $edit_obj = $entity;
+    }
+    $tmp_file = drush_save_data_to_temp_file(drush_json_encode($edit_obj));
+    drush_shell_exec_interactive('$EDITOR ' . $tmp_file);
+    $edited_obj_json = file_get_contents($tmp_file, "r");
+    if (!empty($field)) {
+      $edited_entity = $entity;
+      $edited_entity->$field = drush_json_decode($edited_obj_json);
+    }
+    else {
+      $edited_obj = (object)drush_json_decode($edited_obj_json);
+      $edited_entity = $edited_obj;
+    }
+    drush_entity_save($entity_type, $edited_entity);
+  }
+}
+
+/**
+ * Command callback.
+ */
+function drush_entity_delete($nid = NULL) {
+  if (!is_null($nid)) {
+    _drush_entity_delete(array($nid));
+  }
+  else {
+    $type = drush_get_option('type');
+    if (!is_null($type)) {
+      $nids = drush_get_nodes_by_type($type);
+      _drush_entity_delete($nids);
+    }
+  }
+}
+
+/**
+ * Permanently save an entity - Mostly stolen from entity api.
+ *
+ * In case of failures, an exception is thrown.
+ *
+ * @param $entity_type
+ *   The type of the entity.
+ * @param $entity
+ *   The entity to save.
+ * @return
+ *   For entity types provided by the CRUD API, SAVED_NEW or SAVED_UPDATED is
+ *   returned depending on the operation performed. If there is no information
+ *   how to save the entity, FALSE is returned.
+ *
+ * @see entity_type_supports()
+ */
+function drush_entity_save($entity_type, &$entity) {
+  $info = entity_get_info($entity_type);
+
+  if (method_exists($entity, 'save')) {
+    return $entity->save();
+  }
+  elseif (isset($info['save callback'])) {
+    $info['save callback']($entity);
+  }
+  elseif (in_array('EntityAPIControllerInterface', class_implements($info['controller class']))) {
+    return entity_get_controller($entity_type)->save($entity);
+  }
+  elseif (function_exists($entity_type . '_save')) {
+    $save_function = $entity_type . '_save';
+    $save_function($entity);
+  }
+  else {
+    return FALSE;
+  }
+}
+
+function _drush_entity_delete($nids = array()) {
+  if (drush_drupal_major_version() >= 7) {
+    node_delete_multiple($nids);
+  }
+  else {
+    foreach ($nids as $nid) {
+      $node = node_load($nid, NULL, TRUE);
+      db_query('DELETE FROM {node} WHERE nid = %d', $nid);
+      db_query('DELETE FROM {node_revisions} WHERE nid = %d', $nid);
+      node_invoke($node, 'delete');
+      node_invoke_nodeapi($node, 'delete');
+      if (function_exists('search_wipe')) {
+        search_wipe($node->nid, 'node');
+      }
+    }
+    cache_clear_all();
+  }
+}
