Yes, it will instantiate it on all clients -- that's kind of the point.
If you need something to be local, then don't use TNObjects. UI should be local, for example. Why would you instantiate something locally, only to assign a TNObject? Either something is local or it's networked. Pick one.
For chat, simply have your chat be a part of the scene already. In your scene you can place a TNObject there, and give it a static ID. Since this TNObject is a part of the scene that you will load, it will work fine for communication as all clients will have this object, with the same ID. No instantiation necessary.
In W2 (my current game project) I actually split this into 2 parts -- a generic chat object that gets instantiated in a channel by the first player to join it (and this channel is one that everyone joins on connect). This generic object simply has a script that handles chat messages -- sending and receiving. It has subscribable delegates that my UI script (the second part) listens to. So when messages arrive, they arrive on the common game object. The UI is notified of the messages arriving, and displays them.
Nice advantage of this approach is I can switch scenes where UI is, or load an entirely different UI, without having to lose my ability to send or receive chat messages.
It's always a good idea to separate your visualization from your data, whenever possible.