>> think a good test of the interface would be that all the Windows-related cruft in shell.c could be removed and replaced with a Windows application that calls the embedded CLI. > I agree, and the same goes for the *Nix-related cruft. I, for one, do not follow. The CLI does nothing at all except send SQL text to the SQLite3 library for processing. What on earth would anyone want to "embed" it in another application for? Why not just write your other application to interface with the SQLite3 library and use the API to execute SQL commands? (which is all the CLI does).