user3821: I am currently looking for a video editing program which I can control via the command line. The main feature I need is the ability to add some overlay text. Is there anything out there that can do this?
My ideal platform would be Linux, but I would be open to using Windows or OSX if need be.

user32606: I made a production-grade low-level audio/video FFMPEG-based micro-engine a few years back:
https://github.com/costa/ffmprb
and I've been maintaining it since.
It has a command-line interface -- with rudimentary Ruby scripting required at the moment, and I'm working on a cleaner FS+CLI support.

user29486: I created a cross-platform Node.js based CLI tool for making simple video edits. It is more opinionated and limited than mlt, but it aims to have lots of easy to use components and transitions, and sane default values.
editly \
  title:'My video' \
  clip1.mov \
  clip2.mov \
  title:'My slideshow' \
  img1.jpg \
  img2.jpg \
  title:'THE END' \
  --audio-file-path /path/to/music.mp3

It also supports a more sophisticated edit spec as JSON and can easily be called from JavaScript.
https://github.com/mifi/editly/

user1950: While ffmpeg has editing capabilities it is not specifically designed for editing, and it does not work like an NLE; it takes input(s) and produces output(s), instead of doing non-destructive edits on multiple source files. 
Melt however, based on the mlt framework which powers kdenlive, is designed as a 

"powerful, if somewhat obscure, multitrack command line oriented video
  editor…"

A melt command can do the same job as the timeline in a NLE. Here's an example from their website that plays an edited collection of shots from the source files a.dv, b.mpg and c.png:
$ melt a.dv in=50 out=100 b.mpg out=500 c.png out=500

There is also the capability add effects, and you can also create edits as XML files.

user1871: Avisynth (wiki) is a script-driven app and in conjunction with filters should be able to do the work.

user3476: FFmpeg (wiki) is one option; you can achieve what you want either with the subtitles filter (see also here) or the drawtext filter.
The subtitles filter requires ffmpeg to be compiled with --enable-libass and drawtext requires it to be compiled with --enable-libfreetype. If you're on Linux, the former is fairly likely to be the case, though the latter may not be. Also, beware than Debian and its derivatives (including Ubuntu et al) are using the forked tool avconv, from the libav project (see here for a summary of the situation); some people have reported problems with avconv vs ffmpeg. I would recommend using ffmpeg, mainly because there seem to be more ffmpeg users than avconv users on the SE network, so you'll be able to get better help here.
If the version in your repos is not compiled to do these, you can grab a static build from the FFmpeg website, or you can compile it yourself, following one of the guides on the ffmpeg wiki, making sure to use the correct flags.

3821: <p>I am currently looking for a video editing program which I can control via the command line. The main feature I need is the ability to add some overlay text. Is there anything out there that can do this?</p>

<p>My ideal platform would be Linux, but I would be open to using Windows or OSX if need be.</p>
 32606: <p>I made a production-grade low-level audio/video FFMPEG-based micro-engine a few years back:</p>
<p><a href="https://github.com/costa/ffmprb" rel="nofollow noreferrer">https://github.com/costa/ffmprb</a></p>
<p>and I've been maintaining it since.</p>
<p>It has a command-line interface -- with rudimentary Ruby scripting required at the moment, and I'm working on a cleaner FS+CLI support.</p>
 29486: <p>I created a cross-platform Node.js based CLI tool for making simple video edits. It is more opinionated and limited than <code>mlt</code>, but it aims to have lots of easy to use components and transitions, and sane default values.</p>

<pre><code>editly \
  title:'My video' \
  clip1.mov \
  clip2.mov \
  title:'My slideshow' \
  img1.jpg \
  img2.jpg \
  title:'THE END' \
  --audio-file-path /path/to/music.mp3
</code></pre>

<p>It also supports a more sophisticated edit spec as JSON and can easily be called from JavaScript.</p>

<p><a href="https://github.com/mifi/editly/" rel="nofollow noreferrer">https://github.com/mifi/editly/</a></p>
 1950: <p>While ffmpeg has editing capabilities it is not specifically designed for editing, and it does not work like an NLE; it takes input(s) and produces output(s), instead of doing non-destructive edits on multiple source files. </p>

<p><a href="http://www.mltframework.org/bin/view/MLT/MltMelt" rel="nofollow">Melt</a> however, based on the <a href="http://www.mltframework.org/" rel="nofollow">mlt framework</a> which powers <a href="http://www.kdenlive.org/" rel="nofollow">kdenlive</a>, is designed as a </p>

<blockquote>
  <p>"powerful, if somewhat obscure, multitrack command line oriented video
  editor…"</p>
</blockquote>

<p>A melt command can do the same job as the timeline in a NLE. Here's an example from their website that plays an edited collection of shots from the source files a.dv, b.mpg and c.png:</p>

<pre><code>$ melt a.dv in=50 out=100 b.mpg out=500 c.png out=500
</code></pre>

<p>There is also the capability add effects, and you can also create edits as XML files.</p>
 1871: <p><a href="http://sourceforge.net/projects/avisynth2/" rel="noreferrer">Avisynth</a> (<a href="http://avisynth.org/mediawiki/Main_Page" rel="noreferrer">wiki</a>) is a script-driven app and in conjunction with filters should be able to do the work.</p>
 3476: <p><a href="https://ffmpeg.org/" rel="nofollow noreferrer">FFmpeg</a> (<a href="http://ffmpeg.org/trac/ffmpeg/wiki" rel="nofollow noreferrer">wiki</a>) is one option; you can achieve what you want either with the <a href="http://ffmpeg.org/trac/ffmpeg/wiki/How%20to%20burn%20subtitles%20into%20the%20video" rel="nofollow noreferrer">subtitles filter</a> (see also <a href="https://ffmpeg.org/ffmpeg-filters.html#subtitles-1" rel="nofollow noreferrer">here</a>) or the <a href="https://ffmpeg.org/ffmpeg-filters.html#drawtext-1" rel="nofollow noreferrer">drawtext filter</a>.</p>

<p>The subtitles filter requires ffmpeg to be compiled with <code>--enable-libass</code> and drawtext requires it to be compiled with <code>--enable-libfreetype</code>. If you're on Linux, the former is fairly likely to be the case, though the latter may not be. Also, beware than Debian and its derivatives (including Ubuntu et al) are using the forked tool avconv, from the libav project (see <a href="https://stackoverflow.com/questions/9477115/who-can-tell-me-the-difference-and-relation-between-ffmpeg-libav-and-avconv/9477756#9477756">here</a> for a summary of the situation); some people have reported problems with avconv vs ffmpeg. I would recommend using ffmpeg, mainly because there seem to be more ffmpeg users than avconv users on the SE network, so you'll be able to get better help here.</p>

<p>If the version in your repos is not compiled to do these, you can grab a static build <a href="https://ffmpeg.org/download.html" rel="nofollow noreferrer">from the FFmpeg website</a>, or you can compile it yourself, <a href="http://ffmpeg.org/trac/ffmpeg/wiki/CompilationGuide" rel="nofollow noreferrer">following one of the guides on the ffmpeg wiki</a>, making sure to use the correct flags.</p>
