vibl.ink
← Back
The Terminal Is Open
thriller·

The Terminal Is Open

The screen refreshed at 11:47 PM. New coordinates. New entries. The targeting queue had grown by nine since she'd last counted.

Kate sat with her knees drawn up in the desk chair, bare feet on the edge of the seat. The office was the second bedroom they'd never converted back. Glow-in-the-dark stars still stuck to the ceiling from the previous owners. A purple toy horse on the bookshelf behind the monitor, confiscated from Lily after the biting incident. The rest of the room was hers — two monitors, a docking station, a half-finished glass of Shiraz going sour beside the keyboard.

On the left screen, a terminal window. On the right, the Zone 4 operational log she was never supposed to access, scrolling entries in UTC. She kept converting the timestamps to local. Kandahar was six and a half hours behind Sydney.

CIVILIAN_PROXIMITY_THRESHOLD — the variable name sat in the config file she'd pulled twenty minutes ago. She'd written it in a clean room in Macquarie Park while eating a ham and cheese sandwich. She remembered the sandwich. She remembered setting the default to thirty metres because the spec said thirty metres, and testing it against synthetic data, and going home that night feeling competent.

The value on screen was zero.

Not missing. Not errored out. Set to zero. Someone had changed it in production. The system hadn't flagged it — why would it? Zero was a valid integer. The targeting queue kept filling. Strikes kept resolving.

She put her thumbnail between her teeth. Bit down until she tasted the edge of the polish.

On the fridge in the kitchen, held up by a banana-shaped magnet, there was a permission slip for Lily's excursion to Taronga Zoo. Kate had signed it this morning while making lunches. Ham and cheese for Lily. Vegemite for Sam because he was going through a phase. She'd used the same pen to sign a permission slip and write SAM in block letters on a brown paper bag and she was now looking at a targeting queue that updated every sixty seconds and she could not make those two facts belong to the same person.

Down the hall, Mark shifted in bed. She heard the mattress through the wall — that particular creak, second from the left side. He thought she was debugging a deployment. He thought the contract was for supply chain logistics.

She pulled up the encrypted message again. Three hours old. Rachel Tsai, senior systems analyst, the only other person on the project with access to the operational layer. One line, no signature, routed through Signal:

Have you looked at the Zone 4 logs?

Kate had looked. Kate had kept looking. Rachel's status had been offline for two hours and forty-one minutes now.

She knew the commands. Four lines in the terminal. She could kill the geofencing module, poison the targeting queue with null entries, and trigger a cascade shutdown that would take the whole system offline for at least six hours. She'd built it. She knew where it breathed. Ninety seconds, maybe less, and the queue would stop filling.

And then the logs would point back to her credentials, her IP address, her house in Lane Cove where her children were sleeping twenty metres from this chair, and she would have committed what three different statutes would call an act of sabotage against a defence system during an active operational period.

The screen refreshed. 11:48 PM. Ten now.

She picked up the wine glass. Put it down without drinking. Reached for her phone instead and opened Mark's contact. His photo was from Lily's fifth birthday — cake on his chin, laughing at something off-camera. She locked the phone. Set it face-down on the desk.


She pulled the USB drive from the second drawer. It was a cheap SanDisk, 64 gig, still in the blister pack from Officeworks. She'd bought it three months ago to back up Lily's school photos and never got around to it.

She tore the plastic with her teeth. Plugged it into the port on the left side of the docking station, away from the monitors. The system recognized it immediately. A new volume on the desktop.

The copy command was simple. She typed it without thinking. Source directory, destination, recursive flag, preserve timestamps. Enter.

The progress bar appeared. Four percent. Seven. The Zone 4 logs were larger than she'd expected. Coordinates, UTC timestamps, queue entries, strike confirmations, threshold parameters. All of it structured in the schema she'd designed herself, back when the data was synthetic and the strikes were hypothetical and thirty metres meant something.

Nineteen percent.

Down the hall, the toilet flushed.

Kate's hand went flat on the desk. She heard the bathroom door, then footsteps on the hardwood — Mark's shuffle, heel-heavy, the left foot landing harder since the soccer injury. Coming this way.

Thirty-one percent. She pulled the terminal window to full screen on the left monitor. On the right, she opened the fake Jira board she kept bookmarked — Sprint 14, supply chain API refactor, fourteen tickets in various states of pretend progress. She'd maintained it for eight months. Updated it weekly. It had a burndown chart.

The drive's indicator light caught the edge of the monitor stand. She shifted her body to the left, blocking it with her shoulder.

Mark appeared in the doorway in his boxers, squinting against the screen glare. Hair flat on one side.

There's sausage rolls in the freezer if you want. I got the good ones from the bakery.

Thanks.

He stood there. The drive behind her shoulder was at forty-six percent and the progress bar was right there on the screen behind the Jira board, one alt-tab from being visible.

He always does that when he can't sleep. Stands in doorways.

Mark nodded. Pushed off the doorframe. Stopped.

You okay? You look—

Tired. Yeah. Almost done.

He looked at her for another second. Then the shuffle back down the hall, the bedroom door left open the way he always did. Gone.

Kate moved the Jira board aside. Seventy-three percent. The drive was still copying — every targeting entry, every set of coordinates, every confirmation where the threshold read zero and the system processed the strike anyway because zero was a valid integer and her code didn't distinguish.

Eighty-eight. Ninety-one. Ninety-seven.

Done. She ejected the volume. Pulled the drive from the dock and closed her fist around it.

The screen refreshed. 11:53 PM. Eleven entries in the targeting queue now. Eleven weeks ago David had restructured the access permissions, walling off the operational logs from everyone except himself and Rachel. Kate had asked why at the time. Routine security audit, he'd said.

She opened her fist. The SanDisk sat in her palm, warm from her grip. She put it in the pocket of her cardigan.

Rachel's Signal status was still offline.

The cursor blinked in the terminal window. The four commands she hadn't typed yet.

She typed the query fast, muscle memory from years of chasing production bugs at two in the morning. The audit log schema was her own design — she'd built it to be thorough, which meant it was thorough against the people who used it too.

The results came back in a single scroll. David Chen's access history, filtered by the operational layer, sorted by timestamp. Most of it was routine — config reads, deployment checks, the kind of housekeeping a project lead would do. But three entries weren't routine at all.

August 9th. 2:14 AM AEST. A raw production edit to the CIVILIAN_PROXIMITY_THRESHOLD variable. No change request. No peer review. No deployment pipeline. Just a direct write to the config store. The old value was thirty. The new value was zero. David's credentials. David's session token.

Kate sat with that for a moment. August 9th. Eleven weeks ago. She tried to remember what she'd been doing on August 9th and couldn't.

The second entry was the same night, forty minutes later. A bulk permission change across the operational log directory. Read access revoked for every team member except two: David Chen and Rachel Tsai. That was the routine security audit.

The third entry stopped her. September 22nd. 11:08 PM. Rachel's access to the operational layer — revoked. David's credentials again. Six weeks after he'd locked everyone else out, he'd locked Rachel out too.

Kate scrolled back to the current access list. One name. David Chen. Sole access to the operational logs for the past five weeks. Rachel hadn't had access since September.

So Rachel's Signal message — Have you looked at the Zone 4 logs? — meant Rachel had found another way in. Or she'd kept copies from before. Either way, she'd been looking at data she wasn't supposed to have, and she'd reached out to Kate, and then she'd gone dark.

Three hours and twelve minutes offline now.

Kate's phone lit up on the desk. Face-down, but the vibration was sharp against the wood. She flipped it over. The caller ID said David Chen. 12:01 AM. Thursday now.

She pressed the green icon and held the phone to her ear. Said nothing.

A pause. She heard a click on his end, rhythmic. His ring against the steering wheel.

Kate.

She let the silence hold. The fridge compressor kicked in down the hall.

I can hear your house. You're at home. That's good.

It's midnight, David.

Yeah. I know what time it is.

She heard him exhale. The clicking stopped.

I got an alert forty minutes ago. Someone pulled the full Zone 4 operational log set. Bulk copy. Recursive, timestamps preserved. You know how many people on this project would use a recursive flag with timestamp preservation?

The USB drive sat against her thigh through the cardigan fabric.

Are you in your car?

Kate. Listen to me.

You changed the threshold. August ninth. Two fourteen in the morning. Direct production edit, no change request, no pipeline. You set it to zero.

You went through the audit logs.

I built the audit logs.

A creak on his end. Car seat.

I need you to not do anything tonight.

The queue has eleven entries.

I know what the queue has.

He caught himself. When he spoke again his voice had the careful cadence of someone who'd rehearsed.

You think I didn't sit where you're sitting? I sat there for three nights. I looked at the same numbers. And then I thought about what happens after. Not to the system — to you. To your family. You shut it down tonight, they bring it back up in six hours with someone else's code and your name on a federal indictment.

You locked Rachel out.

Rachel was going to do something stupid.

Where is she, David?

She's on administrative leave. She's fine. She made noise to the wrong people and I put her somewhere safe before it got worse.

Administrative leave. Kate turned the phrase over. It could mean Rachel was home in Chatswood with her cat, or it could mean Rachel's laptop was in a plastic bag in someone's office and her phone was off because it wasn't her phone anymore.

She messaged me three hours ago.

He didn't answer. She heard the engine idling. A siren, distant, on his end.

The system has operational context we don't have. The threshold change came down from people who have intelligence we will never see. I made a judgment call—

You made a production edit at two in the morning with no change request. That's not a judgment call. That's someone telling you to do it and you doing it.

The fridge compressor cycled off. In the quiet she could hear Sam breathing through the baby monitor she'd never unplugged, even though he was four now.

If you shut it down, I can't protect you. I've been keeping you out of the operational layer for a reason. You had deniability. You were the engineer who wrote the module and never saw how it was deployed. That's a defensible position. What you're doing right now — the logs, the audit trail — you're building a case against yourself.

Or against you.

Nothing from his end. Just the engine.

Go to bed, Kate. Delete what you copied. In the morning this looks different. I promise you, in the morning, with your kids at the table, this looks completely different.

The queue is at eleven. What happens to eleven?

That's not our part of the system.

It's my variable. It's my threshold. My code checks proximity and my code returns zero and the strike resolves. That's exactly my part of the system.

Then you should've thought about that when you took the contract.

Good night, David.

Kate. Don't call anyone. Don't send anything. I am asking you — as someone who has known you for six years — to sleep on it. One night.

She ended the call. Set the phone on the desk, screen up this time. 12:09 AM. The targeting queue on her monitor had refreshed twice while David talked. Twelve entries now.

Her hands were steady.

Down the hall, the baby monitor caught the sound of Sam rolling over, the rustle of the doona he'd kicked off and Mark had put back and he'd kicked off again.

Kate put her fingers on the keyboard. The cursor blinked in the terminal. She typed the first command.

sudo systemctl stop geofence-proximity-engine

The response came back in under a second. Service stopped. She'd written the shutdown hook herself, in the clean room in Macquarie Park, because she'd wanted graceful degradation. She'd wanted it to fail safely. She typed the second command.

python3 inject_null_queue.py --target=zone4 --confirm

The queue poisoning script ran for eleven seconds. She counted them against the clock in the corner of the screen. A pipe sound from the kitchen — the hot water system ticking in the walls — made her flinch. The script completed. Null entries flooded the targeting queue, overwriting the twelve coordinates with nothing.

Third command.

psql -c "UPDATE threshold_config SET value='30' WHERE key='CIVILIAN_PROXIMITY_THRESHOLD';"

She set it back to thirty. The confirmation came back: UPDATE 1. One row. That was all it had ever been — one row in a database, and someone had changed it while she slept.

Fourth command. The cascade.

./failsafe_cascade.sh --full --no-rollback

A two-second pause. Then the terminal filled — shutdown confirmations scrolling faster than she could read, service after service going dark. The scroll stopped. A final line: CASCADE COMPLETE. ALL SERVICES OFFLINE. ESTIMATED RECOVERY: 6H 14M.

The right monitor went blank. Not black — blank. The operational log, the targeting queue, the refresh cycle that had been counting up all night. Gone. Just a connection error and a timestamp: 12:11 AM.

Kate sat in the quiet. She could hear the house. From down the hall, Sam made a sound in his sleep, half a word that wasn't a word yet.

She opened Signal. Rachel's name was greyed out, the last message still sitting there unanswered. Kate typed below it: It's down. Zone 4 is offline. I have the logs. She hit send. The single tick appeared. Undelivered.

She stood up. The chair rolled back and bumped the wall. Her legs were stiff from sitting with her knees up. The cardigan hung heavier on the left side.

The hallway was dark. She walked it slowly, one hand on the wall, past the kids' door where a nightlight threw a pale orange wedge across the carpet. Past the bathroom. To the bedroom where Mark was sleeping on his side, one arm over the empty half of the bed.

She said his name. Not loud. The volume you'd use to check if someone was really asleep.

He didn't stir. She said it again.

Mark. Wake up.

He shifted. Made a sound. His hand found the bedside lamp and the room went yellow.

He squinted at her, still half in sleep. She was standing in the doorway in her cardigan and her socks with her arms at her sides.

Just after midnight.

He was waking up now. Reading her face.

Kate came into the room and sat on the edge of the bed. The mattress dipped. She put her hands on her knees.

I don't work on supply chain software. I've never worked on supply chain software. I need to tell you what I actually do, and then I need to tell you what I just did, and you're going to want to ask questions but I need you to let me get through it first.

Mark sat up.

She started with the clean room in Macquarie Park. She started with the variable.

She told him. All of it. The threshold. The zero. David's call. The USB drive in her pocket. The four commands she'd typed nine minutes ago. The six hours they had before the system came back online and her credentials were in every log. She talked for what felt like a long time and Mark didn't move. He sat against the headboard with the duvet pooled at his waist and his hands flat on the mattress and he listened.

When she finished, the house was very quiet.

His voice came out wrong — too high, then corrected.

You did this. Already. It's done.

Yes.

And the system comes back in six hours.

Roughly. Yes.

And then what.

I don't know. I have the logs. I have proof of what David did. But I don't have whistleblower protection. I don't have a lawyer. I don't have a plan past what I did twenty minutes ago.

Mark looked at the wall. At the bedroom door.

You should have told me.

I know.

Eight months.

I know.

He put his hand over his face. Held it there.

He dropped his hand. His eyes were wet but his voice went flat and practical, and she recognized it — it was the voice from the hospital when Sam's bloodwork came back, from every crisis where Mark became someone who made lists and asked questions.

We need to get that drive to someone. Tonight. Before the system comes back up.

I know. I have a journalist. Nina Vasik. She's at the Herald.

Mark swung his legs off the bed. He was already reaching for the jeans draped over the chair back.

You met her once.

She broke the Pine Gap intercept story.

Mark pulled the jeans on, standing. Belt, buckle, done.

And you're just going to drive across Sydney at midnight with classified—

Yes.

He stopped with his hand on the back of the chair.

The kids.

You stay. I go. I'll be back before they're up.

He sat back down on the edge of the bed. The lamp threw his shadow long across the wall behind him.

What about a lawyer first. Before the journalist.

With what? We don't have a lawyer. We have a conveyancer who did our mortgage.

There are people who do this. Whistleblower people. Legal aid, or—

The system comes back online in five hours and forty-eight minutes. When it does, someone patches what I broke and the queue starts filling again. And this time they revoke my access and I have nothing but a USB drive and no one to give it to.

Mark looked down the hall — not toward the kids' rooms but toward the front door.

I'll drive.

Someone has to be here if Sam wakes up.

That landed. Mark looked at the bedroom door and she could see him doing the math — except his variables were different. His variables were four years old and seven years old and asleep.

You call me when you get there. You call me when you leave. You don't stop anywhere else.

Okay.

And Kate.

She was already in the doorway. She turned back.

He was gripping the edge of the mattress. He didn't finish the sentence. She nodded anyway and went down the hall.

She stopped at the kids' door. It was open a crack — Lily's rule, because fully closed was too dark and fully open was too bright, and the negotiation had taken three bedtimes to settle. Through the gap she could see the bunk bed. Sam on the bottom, one arm hanging off the edge, fingers almost touching the carpet. Lily on top, facing the wall.

Kate pulled the door to exactly the width Lily required and kept walking.

Her keys were on the hook by the front door. Her phone was in her hand. She picked up her shoes — the slip-on Blundstones by the mat — and carried them outside so the front door wouldn't wake anyone when she opened it.

The night air hit her and she realised she'd been breathing recycled heating for five hours. The street was empty. Their Mazda sat in the driveway under the jacaranda that dropped purple flowers on the bonnet every November. She got in. The dashboard clock said 12:23 AM.

She pulled up Nina Vasik's number. Three years old, saved after a ten-minute conversation at a cybersecurity panel where Nina had asked sharp questions about defence procurement and Kate had said nothing useful. She typed a message: This is Kate. We met at the UTS panel. I have something you need to see. I can be in Surry Hills in thirty minutes.

She sent it. Sat in the driveway with the engine running. Upstairs, the bedroom light went off.

Her phone buzzed. Nina Vasik: Who gave you this number? Then, eight seconds later: What kind of something?

Kate typed: Defence targeting software. Civilian threshold data. Operational logs showing strikes with the safety parameters set to zero. I built the system. I have proof.

Then: 14 Riley Street, unit 3. Don't park out front.

Kate put the car in reverse. The headlights swept across the front of the house — the garden bed Mark had planted in April, the recycling bin she'd forgotten to put out, the window of her office where the left monitor still glowed with a connection error. She pulled onto the street.

At the end of the block she checked her phone one more time. Signal. Rachel's name, still greyed. The message still sitting on a single tick. Undelivered.

Kate turned onto Burns Bay Road. The city was twenty minutes away.


She parked on the side street behind a skip bin. No streetlight. The Mazda's engine ticked as it cooled. Kate texted Mark: I'm here. I'm safe. She watched the screen until his reply came — just a thumbs up — then got out.

She'd forgotten to put the Blundstones on. She was standing on the pavement in her socks.

The building was a narrow terrace conversion, three buzzers by the door. She pressed unit 3. The lock clicked without a voice on the intercom. Third floor, no lift. The stairwell smelled like old carpet and someone's dinner from hours ago. Kate climbed in her socks.

Nina Vasik opened the door before Kate knocked. She was shorter than Kate remembered, mid-forties, wearing a softball hoodie and reading glasses pushed up on her head. She looked at Kate, then past her down the stairwell, then back.

Come in. Don't touch anything on the dining table.

The dining table was covered. Hansard transcripts, three phones, a laptop with a VPN client open, a cold cup of coffee with a skin on it. A cereal bowl with milk residue sat on top of a stack of manila folders. Nina cleared a chair by moving the folders to the floor. The apartment was small and warm and smelled like paper and old toast.

Kate sat down. She took the USB drive from her cardigan pocket and set it on the table between them.

Nina didn't touch the drive. She looked at it, then at Kate.

Who else knows you're here?

My husband.

Who else knows what's on that drive?

My project lead. David Chen. He's the one who made the edit.

And who else has seen the logs?

A colleague. Rachel Tsai. She messaged me about them tonight. She's been offline for over three hours. David says she's on administrative leave.

Nina took her glasses off her head and put them on. She picked up the drive and plugged it into the laptop. The file directory opened. She didn't speak for a long time. Her eyes moved across the screen — fast at first, then slower, then stopped.

This is real.

Then Nina was on her phone. Then she was on a second phone. She spoke in short, clipped sentences to someone called Ben, then to someone she called only by a surname Kate didn't catch. She used words like injunction and public interest and she said the phrase prior restraint twice. Kate sat in the chair in her socks and her cardigan and watched.

Nina set both phones down and looked at Kate.

Kate looked at the window. The street below was empty. In seven hours Lily would need to be at school with her permission slip for Taronga Zoo. She turned back to Nina.

Where do we start?