Echoquill
Cover banner for Red Threads and Coffee Stains: Book 1: The Reunion

Red Threads and Coffee Stains: Book 1: The Reunion

[EN][S.S.Srs.][Human][SFW][Gay][BL][Cafe, ChildhoodFriends, CollegeUni, FoundFamily, FriendsToLovers, RedStringOfFate, Romance, School, SliceOfLife, SlowBurn, UnspokenFeelings] Red Threads and Coffee Stains: Book 1: The Reunion

Listen

Duration: 1933s

Chapter 1 – Café on the Corner

The bell above the café door chimed, and Kai glanced up from the register. Afternoon light slanted through the big front windows, catching dust motes and the curl of steam from milk pitchers. The place smelled of beans, vanilla syrup, and secondhand books–the kind of cozy that stuck to your hair and notebooks.

He liked the rhythm of the job: grind, pour, swipe. Nothing unexpected.

Then the bell chimed again, and in walked the kind of unexpected he’d spent years convincing himself was never going to happen.

Adrian Reyes.

Taller now, shoulders filling out his hoodie, hair still an artless mess like he’d lost a fight with gravity. His grin hit first–bright, casual, the same one that used to get them both out of trouble when they were ten.

Kai’s hand jerked. Coffee sloshed over the rim of the mug he was filling.

Of course Adrian saw. “Still clumsy, huh?” His voice carried across the café like it owned the air.

Kai grabbed a rag, wiping the counter with clipped precision. “And you’re still loud.”

Adrian chuckled, stepping up to the counter. “Guess some things don’t change.” His eyes swept over Kai–hair falling in his face, ink smudges on his fingers, apron tied too tight. “But you did. You look…” He paused, lips curling. “Different. In a good way.”

Kai’s ears heated. He kept his gaze on the register screen. “That’s what happens when time passes.”

“Ten years.” Adrian leaned an elbow on the counter. “Not that I was counting.”

Kai raised an eyebrow. “Right. Because you definitely remembered I existed.”

“Of course I did,” Adrian shot back easily. “You’re unforgettable.”

The words landed heavier than they should have. Kai busied himself with straightening napkin dispensers.

Adrian let the silence hang just long enough before grinning again. “So, what’s your poison these days? Still despise strawberries?”

Kai blinked. “You remember that?”

“You nearly gagged when Mrs. Lopez gave us strawberry ice pops in fifth grade. Swore you’d rather eat chalk.”

Kai smothered a laugh. “I stand by that.”

“See?” Adrian spread his hands. “Told you. Unforgettable.”

Kai shook his head, muttering, “You’re insufferable.”

“I prefer charming,” Adrian said. “Anyway–make me your best drink. Dealer’s choice.”

Kai hesitated, then pulled a triple-shot caramel latte monstrosity together with a swirl of whipped cream, mostly out of spite. He slid it across. “Here. Try not to go into sugar shock.”

Adrian took a dramatic sip, eyes closing like he was tasting fine wine. “Mmm. Perfect. Sweet enough to rot my teeth.”

Kai deadpanned, “So it matches your personality.”

That earned a bark of laughter. “There he is. Same old Kai. Sharp tongue, soft heart.”

Kai stiffened. Don’t call me that. Don’t remind me you can still read me.

Adrian didn’t press. He tapped the counter lightly, then leaned in close enough for Kai to smell rain and cologne. His voice dropped to a conspiratorial whisper. “I’m glad you’re here.”

Kai’s throat went tight. He forced his tone flat. “It’s a job. People have those.”

Adrian smirked. “And yet, somehow, fate decides to drop me in your café.”

“Fate has poor taste,” Kai muttered.

“Or excellent taste.” Adrian winked, then straightened as someone across the room called his name. He waved, flashing that effortless grin, already slipping into the orbit of others.

Before he left, he glanced back, eyes warm, voice softer. “See you around, Kai.”

The bell chimed as he left.

Kai realized only then that his pencil still sat abandoned on the counter, notebook half-open. He picked it up and scribbled in the margin before he could stop himself:

Some promises don’t fade. They fray, but they’re still there.


Chapter 2 – Promises in Dust

The café was quieter the next afternoon. Soft jazz hummed from the old speakers, and the only customers were two grad students buried in laptops and a woman with a stroller who looked like she might nap if she stopped moving.

Kai liked these hours. Slow, predictable. He could tuck his notebook beneath the counter and scrawl half-thoughts between refilling sugar jars and wiping tables.

The bell chimed.

Kai’s shoulders stiffened before he even looked up.

Of course. Adrian Reyes, again.

This time he wasn’t alone; a couple of guys from the futsal team trailed behind, already jostling each other and laughing. Adrian was the sun in their orbit, striding up with that same easy energy.

“Guess what?” Adrian leaned across the counter.

Kai arched a brow. “What, you’ve run out of other cafés to terrorize?”

Adrian grinned. “This one has the best barista. I did a poll.”

The teammates groaned in unison. One of them muttered, “He’s always like this,” before heading to claim a corner table.

Kai wanted to melt into the floor. “You don’t have to–”

“Relax,” Adrian said, lowering his voice like it was a secret between them. “I meant it.”

Heat prickled behind Kai’s ears. He busied himself with stacking cups.

Adrian didn’t order right away. He tapped the counter with one finger, studying Kai with unnerving focus. “So… you still keep those little notebooks?”

Kai froze. “What notebooks?”

“The ones you used to carry everywhere. Filled with doodles, rants, probably government secrets.”

Kai’s hand twitched toward the notebook tucked under the counter. “You remember that?”

Adrian’s grin softened, turning almost nostalgic. “You used to read me lines sometimes. Remember? You called it practice, but I knew it was just because you trusted me.”

Kai’s throat went tight. He remembered. Vividly.

Flashback

Ten-year-old Kai sat cross-legged on the playground, notebook balanced on his knees. Adrian sprawled beside him in the dirt, swinging a stick like a sword.

“Read me something,” Adrian demanded.

Kai shook his head. “It’s dumb.”

“Nothing you write is dumb,” Adrian shot back, fierce for once. “If you don’t read it, I’ll steal it.”

So Kai read. A clumsy little poem about summer rain and wanting to be remembered. Adrian listened with rare stillness, then said, “Promise me you’ll never stop writing.”

Kai frowned. “Promise you’ll never leave, then.”

They hooked pinkies under the twilight sky. Never.

End flashback

Kai blinked back to the present. His hands were steady only because he forced them to be. “That was a long time ago.”

Adrian tilted his head. “And? Promises don’t expire.”

Kai busied himself with the espresso machine. “Maybe they do.”

Adrian didn’t argue. He just watched, expression unreadable, until Kai shoved a cappuccino across the counter.

“Here. On the house,” Kai muttered.

Adrian’s grin returned, a little crooked. “Careful. If you’re nice to me, I’ll never leave.”

The words hit like an echo from years ago, and Kai nearly dropped the cup.

Adrian didn’t wait for a response. He carried the drinks to his teammates, sliding into the noise of their laughter. But his gaze flicked back, once, catching Kai’s like a thread tugging between them.

Later, after closing, Kai sat at the corner table with his notebook open. His handwriting sprawled uneven across the page:

Some promises turn to dust. Others… wait under the dust, still glowing.

He tapped the pen against the paper, heart unsteady.

Outside, on the other side of the glass, Adrian paused on the sidewalk. For a moment, Kai thought he might come back inside.

Instead, Adrian smiled–soft, private–and walked away into the glow of streetlights.


Chapter 3 – Campus Currents

The first weeks of the semester were chaos. Flyers papered every bulletin board, student clubs shouted recruitment pitches across the quad, and someone in a neon dragon costume was handing out bubble tea vouchers that nobody questioned.

Kai moved through it like a shadow. Head down, notebook under his arm, earbuds in even when he wasn’t listening to anything. He’d learned that music wasn’t always about sound; sometimes it was armor.

Meanwhile, Adrian Reyes was the kind of person people noticed whether he tried or not.

Kai spotted him in the quad one afternoon, surrounded by half a dozen students, laughter orbiting him like satellites. His voice carried, warm and easy, as he explained sign-ups for futsal and cracked jokes with the debate team in the same breath. Sunlight caught on his hair, messy as ever, and Kai had to look away before his stomach twisted itself into knots.

He ducked into the library. Safe ground.

Or so he thought.

“Hey.”

The chair across from him scraped, and Kai nearly dropped his pen. Adrian sat down, dropping a backpack on the table like he belonged there.

Kai glared. “There are other tables.”

“None with you at them.” Adrian grinned, pulling a notebook free. It was pristine, unlike Kai’s, with margins too neat to be honest. “Besides, this one has the best view.”

Kai’s pulse stuttered. “Of the exit?”

“Of you,” Adrian said, deadpan. Then he smirked at Kai’s expression. “Relax, I’m kidding.”

Kai stared flatly. “You’re not funny.”

“Yet you’re smiling.”

“I’m not.”

“You are.”

Kai ducked his head into his notes, furious at the heat crawling up his neck.

For a while, silence stretched. Pages turned, pens scratched. Then Adrian leaned over. “Hey, what class is that?”

Kai didn’t look up. “Comparative Lit.”

Adrian nodded seriously. “Ah yes. Literature that compares itself to… what?”

Kai blinked at him. “That’s not how it works.”

“Enlighten me, then.”

Against his better judgment, Kai launched into a brief explanation–how Comparative Lit analyzed stories across cultures, time periods, and languages. Adrian listened, chin in his hand, grinning like this was the most interesting thing in the world.

When Kai stopped, self-conscious, Adrian said softly, “You always talked like that. Like books were alive.”

Kai’s throat tightened. “Maybe because they are.”

Adrian’s smile flickered into something softer. For a moment, the noise of the library–the hum of printers, the shuffle of feet–faded.

Then Adrian sat back, smirk returning. “Anyway, I’m taking Physics 201. You wanna tutor me?”

Kai snorted. “Absolutely not.”

“C’mon. I’ll pay you in coffee. Or eternal gratitude. Or–” Adrian leaned closer, whispering, “Secrets.”

Kai rolled his eyes. “You don’t have secrets.”

“Everyone does,” Adrian said, suddenly quiet. His grin faltered, just for a second. Then he covered it with a wink. “You’ll find out when you cave and tutor me.”

Kai turned back to his notes, pretending not to notice the shift.


That evening, Kai walked home alone, notebook tucked against his chest. He wrote as soon as he reached his dorm:

Some people shine so bright they pull you into their current. The trick is deciding whether to fight the tide… or let it carry you.

He closed the notebook, fingers lingering on the page. Outside, laughter echoed faintly from the quad–Adrian’s voice among it, pulling at him like gravity.


Chapter 4 – Uninvited Orbit

The cafeteria was its usual chaos: clatter of trays, hum of voices, the occasional crash of someone dropping their fork. Kai sat at the far end with Naomi and Priya, half-listening to their debate about whether pineapple on pizza was a crime against humanity.

Naomi jabbed her fork for emphasis. “Sweet does not belong with savory. Case closed.”

Priya scribbled false dichotomy in her planner.

Kai stirred his soup, content to let the noise blur around him. Safe. Predictable.

Then a shadow fell across the table.

“Room for one more?”

Adrian didn’t wait for an answer. He dropped his tray with a clatter, slid onto the bench right beside Kai, and stole a fry off Naomi’s plate in one motion.

Kai’s spoon froze. “This isn’t your table.”

“Tables are communal property,” Adrian said cheerfully, already reaching for Kai’s water. “And I was lonely.”

Naomi raised a brow. “You? Popular-boy Reyes? Lonely?”

“Tragic, right?” Adrian leaned back, grinning. “But then I remembered–oh yeah, Kai exists. Problem solved.”

Kai shot him a look sharp enough to cut glass. “Don’t make me throw this soup.”

“You wouldn’t.”

“Try me.”

Adrian laughed, leaning closer, voice dropping just for Kai. “There’s that spark I missed.”

The words lodged in Kai’s chest. He stared at his tray, pretending they hadn’t hit harder than intended.

Naomi and Priya exchanged glances like spectators at a tennis match.

“So,” Adrian said, far too casually, “who’s coming to the festival setup meeting tonight?”

Priya perked up. “We are. Volunteers get free food vouchers.”

“Count me in,” Adrian said, then nudged Kai’s shoulder. “And him.”

Kai sputtered. “Excuse me?”

“You love free food,” Adrian said. “Also, you owe me for the coffee spill.”

“I do not.”

“Do too.”

Naomi snorted. “Wow. It’s like watching a married couple argue about groceries.”

Kai nearly choked. “We are not–”

Adrian just smirked, stealing another fry. “Guess I’ll see you tonight, then.”

And just like that, he was gone–tray in hand, orbit shifting to another group across the room.

Kai stabbed his soup with unnecessary force. Naomi’s smirk widened. Priya wrote denial in her planner.


Chapter 5 – Festival Flyers

The student council office smelled faintly of glue sticks and desperation. Piles of cardboard leaned against the walls, half-painted banners drooped across desks, and someone had spilled glitter that would haunt the carpet until the end of time.

Kai hovered near the doorway, clutching a stack of blank flyers. He hadn’t exactly volunteered for festival prep–Adrian had maneuvered him into it with a smirk and a fry theft.

Naomi waved him over. “Good, you’re here. We need more hands that can write legibly.”

Priya added without looking up from her clipboard, “And fewer that draw mustaches on the mascots.”

Across the room, Adrian was laughing with two council members, a paintbrush spinning in his hand like a baton. He caught Kai’s eye and grinned, all teeth, as if to say see, fun, right?

Kai wanted to hurl the flyers at his head.

Instead, he sat at a table and started writing booth names in neat block letters. Ring Toss. Fortune Fish. Shooting Stars. His pen moved steadily, almost soothing.

Of course Adrian wandered over. “Whoa. Look at that handwriting. You should do calligraphy.”

Kai didn’t look up. “I should do anything that doesn’t involve listening to you.”

Adrian plopped into the chair across from him, balancing his paintbrush between his fingers. “Harsh. But accurate. What are you writing?”

“Signs.”

Adrian leaned forward, reading upside down. “Shooting Stars? Ooooh, is that the game where you throw beanbags through painted moons?”

“Yes.”

“I’m amazing at that,” Adrian declared. “We should partner up.”

Kai’s pen stilled. “We?”

“Yeah. You and me. Team unbeatable.”

Kai finally looked up, deadpan. “You cheat at everything.”

Adrian clutched his chest like he’d been shot. “Slander. I win fair and square.”

“By distracting people with your face,” Kai said flatly.

Adrian grinned. “A man must use his assets.”

Naomi snorted from the next table. “Gross. Get a room.”

Kai dropped his pen, rubbing his temples. “Why are you like this?”

“Because it makes you roll your eyes exactly like that,” Adrian said, soft enough only Kai heard.

Kai’s chest tightened. He bent back to his flyers, pretending his ears weren’t burning.


Hours passed in a blur of tape, posters, and glitter wars. Ezra arrived late, threw himself dramatically across a chair, and contributed nothing but chaos. Naomi kept everyone fed with contraband snacks. Priya directed the entire operation with military precision.

Through it all, Adrian hovered near Kai–stealing markers, making dumb puns, dropping casual memories like pebbles in a pond. “Remember the fair back home? You won me that stuffed bear. Still have it.”

Kai almost dropped his ruler. “You kept that?”

Adrian’s smile turned crooked, almost shy. “Told you. Unforgettable.”


By the time they stumbled out of the office, the sky was indigo, lantern strings already going up across the quad.

Naomi stretched. “Festival’s gonna be huge this year.”

Priya ticked boxes on her clipboard. “If no one ruins my perfectly balanced booth layout, maybe.”

Ezra yawned. “Wake me when there’s free food.”

They split off, Naomi and Priya shepherding Ezra toward the bus stop. Kai adjusted his bag strap, ready to head to the dorms.

Adrian fell into step beside him. “So. Partners for Shooting Stars?”

Kai sighed. “You’re impossible.”

Adrian’s grin softened. “And yet, here we are. Same place again.”

For once, Kai didn’t have a comeback.


Chapter 6 – Lantern Light

The festival opened with the smell of frying oil and sugar, the sound of laughter stitched together with the pop of balloons and the tinny strains of a student band warming up onstage. Strings of paper lanterns crisscrossed the quad, glowing faintly even before the sun set.

Kai arrived with Naomi and Priya, notebook tucked under his arm like a shield. Ezra trailed behind, already double-fisting corn dogs.

“Tonight,” Naomi declared, adjusting her antenna headband, “we conquer the ring toss.”

“You can’t conquer probability,” Priya said, exasperated.

“Watch me.”

Kai smiled faintly. It felt almost normal–until a voice cut through the noise.

“There you are.”

Adrian, of course. Hoodie sleeves shoved up, hair damp from an afternoon shower, grin in place. He waved like Kai had been late to his own party.

Kai’s stomach flipped. “Don’t you have a fan club to entertain?”

“Already did,” Adrian said cheerfully, falling into step beside him. “Now it’s your turn.”

Naomi groaned. “Ugh, he’s back.”

Adrian winked. “Missed me, right?”

“Like I miss food poisoning,” Naomi muttered, dragging Priya toward the shooting gallery.

Ezra snorted, then promptly vanished in the direction of fried dough.

Which left Kai. Alone. With Adrian.


They started at the goldfish scooping booth. Adrian crouched, sleeves falling back, eyes intent on the darting flashes of orange. He broke the paper scoop immediately, laughing.

“Hopeless,” Kai muttered.

“Hey, hey, first round’s just practice.” Adrian handed over another scoop. “Your turn.”

Kai hesitated, then crouched too, trying to ignore how close their knees brushed. He focused on the water, steady hands. One fish swam lazily near the surface. Quick flick–he lifted it, just for a second, before the paper tore and it slipped back with a splash.

Adrian clapped. “That was amazing!”

“It was failure.”

“Beautiful failure.” Adrian’s grin was wide, genuine.

Kai ducked his head, ears warm.


Next came Shooting Stars. Wooden boards painted with crescent moons and cut-out holes. Beanbags stacked on the table.

“Team unbeatable,” Adrian reminded him, nudging his elbow.

Kai rolled his eyes. “If we lose, it’s your fault.”

They didn’t lose. Adrian’s throws were reckless but lucky; Kai’s were precise. Together, they cleared the board in minutes. The booth attendant groaned and handed over a giant stuffed fox.

Adrian immediately shoved it at Kai. “For you.”

Kai blinked. “Why me?”

“Because you won it.”

“We both did.”

“Exactly.” Adrian leaned closer, voice dropping. “So now it’s ours.”

Kai clutched the fox against his chest, trying not to let the words lodge too deep.


As night fell, lanterns blazed overhead, warm gold light spilling over everything. Students milled through the crowd, faces glowing, laughter rising like sparks. The music swelled, off-key but joyful.

Adrian and Kai found themselves at the edge of the quad, away from the thickest crowd. A lantern swayed above them, light catching in Adrian’s hair.

“You’re staring,” Adrian said softly.

Kai snapped his gaze away. “No, I’m not.”

“You are.”

Kai’s mouth opened, then shut. He hugged the stuffed fox tighter.

Adrian tilted his head, smile smaller now, almost hesitant. “You always did that. Look at me like I was… more than I was.”

Kai’s breath caught. “Maybe you were.”

For a heartbeat, the noise of the festival blurred into nothing. Just lantern light, just Adrian’s eyes, just the tug of something unseen but undeniable–like a red thread tightening.

Adrian leaned back first, breaking the moment with a grin that didn’t quite reach his eyes. “C’mon. Let’s get you takoyaki before Naomi eats it all.”

Kai followed, but the phantom tug remained, hot and certain in his chest.


Chapter 7 – Wishes Written

The lantern booth was tucked near the fountain, paper slips fluttering from twine like a forest of secret thoughts. Students leaned over tables, scribbling quickly before tying their wishes to the lines. The air smelled of ink and candle wax, sharp and sweet.

Kai stood awkwardly with the pen in his hand, fox plush pressed to his side. Across from him, Adrian was already writing, head bent, brows furrowed in concentration that didn’t match his usual easy grin.

Naomi breezed past, tying up her slip. “Mine says ace every test without studying.”

Priya rolled her eyes. “That defeats the purpose of tests.”

Ezra stumbled up with powdered sugar on his shirt, scrawled infinite funnel cake, and tied it carelessly before wandering off again.

Kai turned back to his blank slip. The pen hovered. One word, the sign said. Just one.

Bravery, he wrote. His handwriting was sharp and deliberate, as though pressing harder would make it truer.

Adrian tied his own slip with practiced ease, then leaned against the post, watching Kai. “What’d you put?”

Kai shook his head. “Not telling.”

Adrian smirked. “Secretive. Interesting.”

“You?” Kai asked, more curious than he meant to sound.

Adrian grinned, hiding the paper behind his back. “Classified.”

Kai rolled his eyes, but there was a pulse in his chest, a thread tugging faintly as if their secrets might already be tangled together.

Above them, the lanterns swayed in the evening breeze, golden light trembling across their faces.

For a moment, it was enough just to stand there–two slips of paper, two untold wishes, dangling side by side in the glow.


Chapter 8 – Windows Between Us

The festival was winding down. The music had faded to a lazy strum of guitar, food stalls shuttering one by one. Lanterns still glowed, swaying in the night breeze, but the crowd had thinned to stragglers and couples walking hand in hand.

Kai ducked out before the cleanup started, slipping away with the fox plush tucked under his arm. His friends had scattered–Naomi arguing about probability with a ring toss attendant, Priya ticking boxes on her clipboard even now, Ezra probably passed out under a funnel cake wrapper somewhere.

The café was quiet when he let himself in through the back door. His manager had already closed up for the night, but Kai liked the silence here. He flicked on the small lamp by the front window, sat at his usual corner table, and opened his notebook.

The words came slow, looping across the page:

Some promises don’t vanish. They fray, they fade, but sometimes they wait under the dust. Lantern light finds them. Lantern light makes them shine again.

He paused, tapped the pen against the paper. His handwriting wavered, uneven in the dim glow.

I don’t know what I’m writing toward. Just that I can’t seem to stop writing him back into the margins.

He stared at the words until the letters blurred. Then he closed the notebook gently, as if the pressure of his palm could keep the confessions inside.

Outside, the glass reflected his own outline back at him. For a moment, it was just Kai–small, hunched, shadowed against the lamplight.

But then movement shifted in the reflection.

Adrian.

He stood on the sidewalk, hands stuffed in his hoodie pockets, hair ruffled by the wind. His teammates had long since vanished, but he lingered here, outside the café, gaze fixed on the boy behind the glass.

Kai’s chest lurched. He didn’t move, didn’t wave. Just sat, notebook closed under his hand.

Adrian didn’t move either. But his grin–the usual bright, thoughtless one–was gone. In its place was something smaller, steadier. A smile not for an audience.

It lasted only a moment. Then Adrian shoved his hands deeper into his pockets and turned, walking off into the night.

Kai let out a breath he hadn’t realized he was holding. The lantern glow caught on the window, threading gold across the glass between them.

For the first time in years, the silence didn’t feel empty. It felt full.