How do I implement tab completion in node.js shell?

You could monkey-patch the REPL. Note that you must use the callback version of the completer, otherwise it won't work correctly:

var repl = require('repl').start()
var _completer = repl.completer.bind(repl)
repl.completer = function(line, cb) {
  // ...
  _completer(line, cb)
}

Just as a reference.

readline module has readline.createInterface(options) method that accepts an optional completer function that makes a tab completion.

function completer(line) {
  var completions = '.help .error .exit .quit .q'.split(' ')
  var hits = completions.filter(function(c) { return c.indexOf(line) == 0 })
  // show all completions if none found
  return [hits.length ? hits : completions, line]
}

and

function completer(linePartial, callback) {
  callback(null, [['123'], linePartial]);
}

link to the api docs: http://nodejs.org/api/readline.html#readline_readline_createinterface_options