The paper describes the development and application of an adaptive algorithm for tetrahedral grids. An initial unstructured grid is adapted by employing local division, as well as deletion of the tetrahedral cells. The process is dynamic, and the adapted grid changes follow evolution of the solution. Adaptation of the cells consists of normal division of a tetrahedron into eight subcells, as well as directional division into two or four subcells. A major issue of such adaptive grid algorithms is elimination of hanging nodes that appear on the edges in the interface between the embedded and unembedded zones. A novel technique has been developed for treatment of such interface cells that can be applied to eliminate any possible hanging node configuration in a simple way. A special data structure based on octrees has been developed, which is flexible to handle all different types of cell division/deletion. Application cases include a moving source, as well as transonic flow around the ONERA M6 wing.