There is a serialization system built into panda — in fact, BAM files are serialized scene graph trees. But the serialization system is for more than just storing nodes - you’re also supposed to be able to send them back and forth via socket and the like.
I haven’t studied the serialization APIs much, but you’ll find that almost every panda object contains these methods:
static void register_with_read_factory();
virtual void write_datagram(BamWriter *manager, Datagram &dg);
virtual int complete_pointers(TypedWritable **plist, BamReader *manager);
static TypedWritable *make_from_bam(const FactoryParams ¶ms);
void fillin(DatagramIterator &scan, BamReader *manager);
I believe that these are all related to the serialization (and unserialization) process. Also, the classes “BamReader,” “BamWriter,” and “BamFile” are all potentially useful.