Moore’s Law is pushing us inevitably towards a world of pervasive, wireless, spontaneously networked computing devices. Whatever these devices do, they will have to talk to and negotiate with one another, and so software agents will have to represent them. Whereas conventional services on intranets will continue to be distributed using established middleware standards, internet services are being built on top of http, wap or other protocols, and exchange information in HTML, XML, and just about anything that can be wrapped as a MIME type or streamed. This situation leads us to three software problems: (i) How can we simplify the task of programming these agents? (i.e., Java is not enough), (ii) How can agents interact and interoperate in an open, evolving network environment? (i.e., XML is not enough), (iii) How can we reason about the services that agents provide and use? (i.e., IDL is not enough). We discuss these questions in the context of our work on Piccola, a small composition...