In this position paper we motivate and describe the Congestion Manager (CM), a novel end-system architecture, which enables application adaptation to network congestion. The CM maintains congestion and path related information and allows flows to learn from each other and share information. It also exports an API to enable applications to learn about network status and regulate data transmission. As a result, applications are freed from having to detect network congestion and probe for spare bandwidth. We describe how TCP can be implemented using the CM and conclude that the CM provides an excellent framework for building adaptive Internet applications.