"What happens when you want to update functionality?
Just as food for thought, I'd look at using scripted documents using TclKit. This separates the platform specific runtime, and would allow the client to automatically upgrade itself from the server as needed.