Abstract: A community of collaborative software agents works together in a domain to provide functionality such as provision of communications services or control of a chemical process. A scheduler is built into each collaborative agent which schedules tasks allocated to that particular agent and tasks sub-allocated by the agent. The scheduler has a mechanism for over-booking tasks for any one agent. It can also make tentative booking which can be overwritten of timed out.