Increasingly products and environments will be equiped with intellligence that can observe, anticipate and respond to the user. The challenge is to make these systems easy to program and easy to interact with. The SRA Ambient Intelligence is investigating a new paradigm for bringing the flexibility of information technology to bear in every aspect of daily life. It foresees that people will be surrounded by deeply embedded and flexibly networked systems that provide easily accessible yet unobtrusive support for an open-ended range of activities, to enrich daily life and to increase productivity at work. These systems will be quite different from current computer systems, as they will be based on an unbounded set of hardware artefacts and software entities, embedded in everyday objects or realized as new types of device. Cooperation between individual entities is a necessity, because isolated entities may not be able to perform their tasks with sufficient quality or efficiency, or not reach the required distributed control objectives. Objects should be seen as encapsulating entities, mixing hardware and software in any proportion and at any level of complexity: an object may thus be as simple as a sensor, or as complex as a portable device, or even an entire car or building, depending on the context. However, such systems will only be viable if they support many diverse applications concurrently, and if they remain open towards unforeseen uses. Applications will execute on behalf of different stakeholders with potentially competing and conflicting interests. Their execution will involve many software entities across distributed and embedded devices. Users, applications and devices will compete for resources such as processing time, memory, communication bandwidth, and sensors/actuators, and they will need to be able to negotiate access. The multitude of devices and computational processes all require energy for their operation, but energy will be a particularly scarce resource that needs to be carefully managed not only at device-level but across entire ambient systems. The supporting architectures should be open, distributed and scalable, naturally integrating heterogeneous devices ranging from tiny actuators to large computers. It will combine architectures, systems support, networking, data processing and tools to support timely reactivity and pro-activeness, reconfigurability, real-time adaptation, dependability, and context sensitivity.