# ADD-ON COMMANDS hledger also searches for external add-on commands, and will include these in the commands list. These are programs or scripts in your PATH whose name starts with `hledger-` and ends with a recognised file extension (currently: no extension, `bat`,`com`,`exe`, `hs`,`lhs`,`pl`,`py`,`rb`,`rkt`,`sh`). Add-ons can be invoked like any hledger command, but there are a few things to be aware of. Eg if the `hledger-web` add-on is installed, - `hledger -h web` shows hledger's help, while `hledger web -h` shows hledger-web's help. - Flags specific to the add-on must have a preceding `--` to hide them from hledger. So `hledger web --serve --port 9000` will be rejected; you must use `hledger web -- --serve --port 9000`. - You can always run add-ons directly if preferred: `hledger-web --serve --port 9000`. Add-ons are a relatively easy way to add local features or experiment with new ideas. They can be written in any language, but haskell scripts have a big advantage: they can use the same hledger (and haskell) library functions that built-in commands do, for command-line options, journal parsing, reporting, etc. Here are some hledger add-ons available: ## Official add-ons These are maintained and released along with hledger. ### api [hledger-api](hledger-api.html) serves hledger data as a JSON web API. ### ui [hledger-ui](hledger-ui.html) provides an efficient curses-style interface. ### web [hledger-web](hledger-web.html) provides a simple web interface. ## Third party add-ons These are maintained separately, and usually updated shortly after a hledger release. ### diff [hledger-diff](http://hackage.haskell.org/package/hledger-diff) shows differences in an account's transactions between one journal file and another. ### iadd [hledger-iadd](http://hackage.haskell.org/package/hledger-iadd) is a curses-style, more interactive replacement for the [add command](/hledger.html#add). ### interest [hledger-interest](http://hackage.haskell.org/package/hledger-interest) generates interest transactions for an account according to various schemes. ### irr [hledger-irr](http://hackage.haskell.org/package/hledger-irr) calculates the internal rate of return of an investment account, but it's superseded now by the built-in [roi](#roi) command. ## Experimental add-ons These are available in source form in the hledger repo's bin/ directory; installing them is [pretty easy](/download.html#d). They may be less mature and documented than built-in commands. Reading and tweaking these is a good way to start making your own! ### autosync [hledger-autosync](https://github.com/simonmichael/hledger/blob/master/bin/hledger-autosync) is a symbolic link for easily running [ledger-autosync](https://pypi.python.org/pypi/ledger-autosync), if installed. ledger-autosync does deduplicating conversion of OFX data and some CSV formats, and can also download the data [if your bank offers OFX Direct Connect](http://wiki.gnucash.org/wiki/OFX_Direct_Connect_Bank_Settings). ### chart [hledger-chart.hs](https://github.com/simonmichael/hledger/blob/master/bin/hledger-chart.hs#L47) is an old pie chart generator, in need of some love. ### check [hledger-check.hs](https://github.com/simonmichael/hledger/blob/master/bin/hledger-check.hs) checks more powerful account balance assertions.