An engine including: a cycloidal rotor having N lobes (202A, 202B); a housing having a corresponding set of N+1 lobe-receiving regions (250, 252, 253) for successively receiving the lobes as the rotor rotates about an axis relative to the housing, the housing having: (i) a pair of sides axially disposed on first and second sides of the rotor, and (ii) a peak (205, 206, 207) disposed between each pair of adjacent lobe-receiving regions, and (iii) an intake port and an exhaust port; a plurality of peak seals (251A, 251B, 251C), at least one of the plurality of peak seals disposed on each peak and configured to maintain contact with the rotor throughout a period of rotation of the rotor, each peak seal being radially biased against the rotor throughout the rotation of the rotor, on account of the cycloidal geometry of the rotor and the lobe-receiving portions; a first passageway defined in the rotor to communicate cyclically between the intake port and a working chamber, the first passageway configured to allow air to enter from a radial face of the rotor into the working chamber, the working chamber defined as a volume lying between two peak seals, the housing and the rotor; a second passageway, distinct from the first passageway, defined in the rotor to communicate cyclically between the exhaust port and the working chamber, the second passageway configured to allow exhaust gas to exit from the working chamber through the radial face of the rotor; a first face seal, disposed between the first side of the housing and the rotor, configured to seal the working chamber; and a second face seal, disposed between the second side of the housing and the rotor, configured to seal the working chamber; wherein the first face seal is disposed near an outer edge of the rotor, the outer edge defined by an intersection of an axial face of the rotor with the radial face of the rotor, wherein the passageways and the face seals are configured to cause each face seal to maintain contact with both the rotor and one of the sides of the housing through all angular positions of the rotor while avoiding communication with either of the ports. a cycloidal rotor having N lobes (202A, 202B); a housing having a corresponding set of N+1 lobe-receiving regions (250, 252, 253) for successively receiving the lobes as the rotor rotates about an axis relative to the housing, the housing having: (i) a pair of sides axially disposed on first and second sides of the rotor, and (ii) a peak (205, 206, 207) disposed between each pair of adjacent lobe-receiving regions, and (iii) an intake port and an exhaust port; (i) a pair of sides axially disposed on first and second sides of the rotor, and (ii) a peak (205, 206, 207) disposed between each pair of adjacent lobe-receiving regions, and (iii) an intake port and an exhaust port; a plurality of peak seals (251A, 251B, 251C), at least one of the plurality of peak seals disposed on each peak and configured to maintain contact with the rotor throughout a period of rotation of the rotor, each peak seal being radially biased against the rotor throughout the rotation of the rotor, on account of the cycloidal geometry of the rotor and the lobe-receiving portions; a first passageway defined in the rotor to communicate cyclically between the intake port and a working chamber, the first passageway configured to allow air to enter from a radial face of the rotor into the working chamber, the working chamber defined as a volume lying between two peak seals, the housing and the rotor; a second passageway, distinct from the first passageway, defined in the rotor to communicate cyclically between the exhaust port and the working chamber, the second passageway configured to allow exhaust gas to exit from the working chamber through the radial face of the rotor; a first face seal, disposed between the first side of the housing and the rotor, configured to seal the working chamber; and a second face seal, disposed between the second side of the housing and the rotor, configured to seal the working chamber; wherein the first face seal is disposed near an outer edge of the rotor, the outer edge defined by an intersection of an axial face of the rotor with the radial face of the rotor, wherein the passageways and the face seals are configured to cause each face seal to maintain contact with both the rotor and one of the sides of the housing through all angular positions of the rotor while avoiding communication with either of the ports.