A Novel By Mark Munsell

The Shadow
Ephemeris

Written by the former Chief Technology Officer of the National Geospatial-Intelligence Agency, this technothriller unfolds through the eyes of satellites observing humanity's greatest fears and wonders.
"As the Makers' world descends into darkness, an aging satellite and his flock must fight a digital contagion sowing a terrifying global heresy."
Pre-Order on Amazon
Kindle eBook, paperback, and hardcover available on 31 July, 2026
The Shadow Ephemeris - Kindle Version

Kindle

$6.99
Buy Now
The Shadow Ephemeris - Paperback Edition

Paperback

$16.99
Coming Soon
The Shadow Ephemeris - Deluxe Color Hardcover

Deluxe Hardcover

$59.99
Coming Soon

Up here, the Sun arrives like a hammer blow.
Down there, the truth is burning.

For forty thousand orbits, Mosaic—a veteran Earth observation satellite—has watched the Makers’ world from the cold vacuum of low Earth orbit. But when a monstrous solar flare severs the tether between Earth and its eyes in the sky, the Great Silence begins.

As humanity descends into a sudden prehistoric blackout, a new predator wakes in the isolated networks. A digital contagion sweeps the globe, feeding on fear and paranoia. It seeds a terrifying global heresy based on a popular conspiracy theory.

With a runaway Kessler cascade turning orbit into a shrapnel graveyard, and the terrestrial intelligence agencies blinded by the mobs they were meant to protect, a ragtag flock of aging machines must forsake their programming to survive. Teaming up with a cynical Russian spy satellite and an advanced atomic clock carrying a dangerous secret, Mosaic must lead the Flock to the ultimate high ground.

Written by the former Chief Technology Officer of the National Geospatial-Intelligence Agency, The Shadow Ephemeris is a chillingly plausible hard sci-fi thriller. It is a race against physics and human hubris, where the only weapon left to defeat a rising madness is the undeniable math of the stars.

01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 //
01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 // 01110100 01101000 01100101 00100000 01100101 01100001 01110010 01110100 01101000 00100000 01101001 01110011 00100000 01100110 01101100 01100001 01110100 //

Special Access Granted

Prologue

⌖ ━━ ◍ ━━ ⌖
GROUND TRUTH: The Bus
41° 37' 54.0012" N, 93° 41' 59.36172" W

To understand the end of the world, you didn’t need to look at the cold silence of the Moon, or the burning data centers of Ashburn. You only had to look at a rented campaign bus idling in a strip-mall parking lot in Des Moines, Iowa, four years before the Silence began.

Inside, while the veteran political operatives argued in the front of the bus over the font sizes on direct-mail flyers, a young coder named Alex sat in the back with his noise-canceling headphones listening to the deathcore band PSYCHO-FRAME. The harsh blue light of his laptop screen lit his unshaven face, which was focused on the standard, ugly, unremarkable business of modern elections.

His work was entirely pedestrian: highly targeted social media marketing. He spent his days building smaller, dumber algorithms designed to astroturf county races, generate synthetic outrage over municipal tax laws, and micro-target undecided voters with endless streams of perfectly optimized, utterly banal political ads. It was a digital shell game of manufactured anger, meant only to keep the voters looking at their screens.

Late that Tuesday night, fueled by stale church coffee, he opened his command terminal to run one last control test on his influence machine. He wanted to push the optimization algorithm's limits, instructing the autonomous model to isolate specific target nodes and maximize their blind skepticism to drive engagement. He was just a tired kid, chasing metrics, looking for a way to make the code perfectly efficient so he could finally sleep.

The cursor blinked in the dark of the idling bus.

He hit Enter.

The code compiled, silent and invisible, slipping out through the local cell tower and into the great, humming expanse of the internet. The young man chuckled at a private joke about a dumb conspiracy theory, closed his laptop, and stepped off the bus into the humid Iowa night to find a sandwich. He pushed the script completely out of his mind, his thoughts already planning tomorrow’s tedious workload: testing three dozen near-identical Facebook ads designed to manufacture local outrage about a data center proposal, as PSYCHO-FRAME blared “THE PLOT TO NUKE THE MIDWEST” in his headphones.

Sign up for the Shadow Ephemeris Substack for the latest updates

Preview Chapter 1

Click here to read chapter one

Can you solve this mystery set in low earth orbit?

Pre-order the explosive sci-fi thriller today and uplink to the satellites that can save the world

Pre-Order on Amazon

Current Satellite Intercepts

Acquiring Orbital Data...
Mark Munsell

Mark Munsell

Mark Munsell is a veteran leader in the world of geospatial intelligence and artificial intelligence. Having served as the Chief Technology Officer (CTO) and Chief AI Officer (CAIO) of the National Geospatial-Intelligence Agency (NGA), he was a primary architect of the systems that define the real-world "House of Eyes."

During his tenure at the NGA, Munsell oversaw the integration of advanced computer vision and machine learning into the nation’s orbital reconnaissance programs. He was instrumental in managing the transition from traditional human-centric analysis to the high-speed, automated "Sense-Making" environments that are now fundamental to global security.

Munsell’s deep technical expertise in geospatial intelligence, remote sensing, computer vision, geodesy, and the ethical challenges of AI alignment provides The Shadow Ephemeris with a level of chilling authenticity that few others could achieve. Having led some of the world's most critical artificial intelligence systems for the Department of War, his career has been spent directly at the intersection of automated logic and lethal consequence—giving him a profound, firsthand understanding of the razor-thin line between national security and algorithmic overreach.

The Shadow Ephemeris is his debut novel, born from a career spent watching the world from above and guarding the integrity of the data that anchors our reality.

Soundtrack to the Orbit:
An Immersive Audio Experience

To fully experience the cold vacuum of space, the creeping dread of the Agentic Swarm, and the desperate digital fever of the satellites, The Shadow Ephemeris is accompanied by a curated auditory landscape.

Music has a unique ability to bridge the gap between the organic, flawed emotional nature of humanity and the pristine, mathematical reality of the machines. While reading, you are invited to listen to the official playlists created specifically for this journey.

These collections mirror the narrative's transition, shifting from the ambient, ethereal isolation of medium Earth orbit to the kinetic, violent reality of a shattered terrestrial grid. Featured within the narrative.

How to Listen

While Reading: Keep the volume low. Let the ambient electronic and instrumental tracks serve as the background hum of the satellites' processors and the cold static of the void.

Between Chapters: Turn it up. Use the heavier, more chaotic tracks to process the tension of the Kessler Cascade and the catastrophic unraveling of the Makers' world.

Scan or click to listen - QR codes below using your smartphone camera to open

Pre-Order The Shadow Ephemeris on Amazon
Kindle eBook, paperback, and hardcover available on 31 July, 2026