I can't find any documentation on the launchd checkin process. Using SampleD, launch.h, and other people's documentation of their discoveries it's possible to put together a working daemon, but with no guarantee that you're doing everything right. (Even though launchd is open source, its APIs need documentation.) launchd.plist(5) is the first place I even saw the check-in process mentioned: "The job must check-in to get a copy of the file descriptors using APIs outlined in launch(3)". launch(3) doesn't exist (<rdar://problem/7130390>). It seems like the following, at least, should be documented: 1) What check-in is and when it is necessary 2) The consequences of a job not checking in when launchd expects it 3) What keys in the response dictionary are filled in at runtime 4) How to memory manage launch data returned by check-in functions (i.e. what needs to be released) 5) Error conditions and how to handle them What do you think? Has this come up before? Is there some secret store of documentation I'm missing? Is this API so intuitive that documentation is redundant?