All, In the current mainline client everything is lugged into one executable (with an optional daemon-only one). I think this is a bad idea for various reasons, and would propose something like: - bitcoind: bitcoin daemon - bitcoin(-qt): bitcoin GUI executable - bitcoincl: bitcoin RPC command line By default, all three would be built. In non-GUI mode, only bitcoind and bitcoincl are built (the names are obviously open for discussion). Advantages: - It is more clear to the user. One command, one function. - It simplifies the main functions. - The UI would no longer double-function as daemon. It is a waste of memory to link the UI libs if you only want to run a background process. - The UI and daemon would no longer double-function as RPC call. Why load the code for UI and network if you just want to send a single command over JSONRPC? This would also prevent accidentally launching the daemon/UI locally if you just want to send a command and forget to give an argument. JS