
Research
/Security News
Fake imToken Chrome Extension Steals Seed Phrases via Phishing Redirects
Mixed-script homoglyphs and a lookalike domain mimic imToken’s import flow to capture mnemonics and private keys.
Documentation generator for every language ever based on docker and docco. Named after the author of "Sittin' On The Dock of the Bay," whose birthday just passed.
named after the documenter of the dock of some nameless bay somewhere.
supported languages:
real sick. check it:
require architecture to store settings
per-project for generating documentation. that way you can just type otis
in the project root -- nothing more. finally, you'll be able to get that
frontal lobotomy without inconveniencing your coworkers -- you've earned it!cake watching?Pygments (http://pygments.org)
(this should easy_install pygments for you, but if not, it's not very hard to get it up and running manually)
npm install -g otis
$ otis [use <config>] [options] [files to document]
when use <config> is present, otis will attempt to load config files in the
following order:
... and will bail if neither of the latter two could be found, assuming you
have made a grave error of some kind. otis will not look for
./otis.config.js under these circumstances.
when there is no 'use ' argument specified, otis will use this order instead:
~/.otis/otis.config.js./otis.config.jsotis loads all of the config files it can find and merges them together, giving "override precedence" to the files listed closer to the bottom in the two lists above.
so for example, if you have a home directory otis.config.js and also a current directory otis.config.js, otis will load both, and will allow anything in the current directory config to override the home directory config.
they're just your typical input files. four little NBs, though:
inDir argument
(if you give one). -i, --inDir Input directory (defaults to current dir)
-o, --outDir Output directory (defaults to ./doc)
-t, --tplDir Directory containing dox.<ext>, code.<ext>, and tmpl.<ext>
-e, --tplEngine Template parser (see github.com/visionmedia/consolidate.js)
-n, --tplExtension Template file extension
-m, --markdownEngine Only two choices, cowboy.
-u, --onlyUpdated Only process files that have been changed
-c, --colourScheme Color scheme to use (as in pygmentize -L styles)
-y, --css CSS file to include after pygments CSS (you can specify this flag multiple times)
-T, --tolerant Will parse comments without a leading ! (ex: "/**! ...")
-w, --watch Watch on the input directory for file changes (experimental)
-I, --ignoreHidden Ignore hidden files and directories (starting with . or _)
-s, --sidebarState Whether the sidebar should be open or not by default
-x, --exclude Paths to exclude
-W, --writeConfig Write 'otis.config.js' in PWD using the options provided.
-h, --help Show this help text.
you can have otis auto-generate a config file for you in the current
directory freezing whatever flags you pass to it into a reusable command.
if the current directory or ~/.otis contain an otis.config.js file, all you
have to type to generate beautiful, easily-navigable documentation is otis .
(mind the dot)
but, just for reference's sake, an otis.config.js file will basically look
like this:
module.exports = {
inDir: './',
outDir: './doc',
tplDir: require("path").join(process.env.HOME, '.otis', 'templates'),
tplEngine: 'jade',
tplExtension: 'jade',
markdownEngine: 'showdown',
onlyUpdated: false,
colorScheme: 'friendly',
tolerant: false,
ignoreHidden: true,
sidebarState: true,
exclude: 'otis.config.js,*.md,doc,node_modules,bin'
};
yep, just a regular old node.js module.
note that the keys on this object correlate 1 to 1 with the available command-line options. that's the plan moving forward indefinitely.
there's currently only one file that otis is hard-coded to look for in
~/.otis, namely, otis.config.js (or otis.config.<config>.js as the case
may be).
however, it's also a great place to store your custom templates, custom css files, etc. as well. only difference is that you have to tell otis (yes, in a config file) that he should look there for them.
don't waste your ~/.otis. put it to good use.
$ otis .
$ otis -i src -o documents
or:
$ otis -o documents src
or:
$ otis -o documents src/*
note that in the first example, the contents of src will be mapped directly
into documents whereas in the second and third examples, the files will be
created inside documents/src.
i will bequeath to you the secret, ancient command i use to generate this project's documentation. it does all of the following:
gh-pages branch of this repo_ or .node_modules directory, the README.md file, and a few other
thingsthe command is:
$ otis .
hahaaaaa, gotcha! see? use otis.config.js files. they're great.
you may not want every single comment in your code to end up as a line in your
documentation. otis assumes that to be the case by default and will only
process a comment as documentation if the very first character after the
comment delimiter is ! (an exclamation point).
so, depending on the language, something like the following:
//! slkdfjslkdjf
/*!
* alskdfjlaskjdf
*/
###!
asldkfjalskdjf
###
if you want to disable this behavior so that all comments become
documentation, just use the --tolerant or -T flag on the command line, or
include tolerant: true in your otis.config.js file.
these are exactly as in pygmentize -L styles:
at the moment, only:
bryn austin bellomy < bryn.bellomy@gmail.com >
otis owes unrepayable debts to:
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2004 Sam Hocevar <[sam@hocevar.net](mailto:sam@hocevar.net)>
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.
FAQs
Documentation generator for every language ever based on docker and docco. Named after the author of "Sittin' On The Dock of the Bay," whose birthday just passed.
We found that otis demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
/Security News
Mixed-script homoglyphs and a lookalike domain mimic imToken’s import flow to capture mnemonics and private keys.

Security News
Latio’s 2026 report recognizes Socket as a Supply Chain Innovator and highlights our work in 0-day malware detection, SCA, and auto-patching.

Company News
Join Socket for live demos, rooftop happy hours, and one-on-one meetings during BSidesSF and RSA 2026 in San Francisco.