{"schemaVersion":"jobsearcher.job.v1","id":"62b72c05673aa3aa5a1ec4e2","url":"https://jobsearcher.com/jobs/62b72c05673aa3aa5a1ec4e2","canonicalUrl":"https://jobsearcher.com/jobs/62b72c05673aa3aa5a1ec4e2","title":"Software Engineer, Terminal Interface","description":"Normal Computing | Build with Us\n\nNormal is an applied AI company solving the hardest problems in AI and silicon. We build foundational hardware and software for the semiconductor industry, critical AI infrastructure, and the broader systems that power our world, in partnership with the world's most advanced institutions. We work as one team across New York City, Silicon Valley (Mountain View), London, Copenhagen, and Seoul.\n\nThe Role\n\nNormal CLI is how semiconductor engineers do AI-assisted verification work. It is a large interactive terminal application, built in Python and Textual, that design verification engineers keep open all day, usually in environments we do not control: remote workstations inside chip companies, SSH sessions, tmux, Windows and WSL. Our users are accustomed to terminal products, and for many of them this is the first and only surface of Normal they will use. We expect that to remain true.\n\nWe are hiring the engineer who will own it as a product: productionizing what began as a research tool and giving it a dedicated end-user focus. You will own the interaction model and the information design — how people enter and edit instructions, how a long agent run stays legible while it streams, how tool use and proposed changes are presented for review, and how work is interrupted, resumed, and recovered after a failure. You will also own the local session client beneath it, and be a leading voice in the client API the rest of our product is built on.\n\nThe boundaries matter here. Our ML and research engineers keep the harness — the skills, tools, hooks, and model behavior that make the agent good at chip verification. You take the application those capabilities reach users through. You will sit on the product engineering team that also builds our desktop workbench, our web product, and our agent orchestration, so the terminal moves into the same product as everything else, with the same vocabulary, state, and quality bar.\n\nOn any given day, you might rework how a long verification run folds and summarizes itself so an engineer can read it at a glance, chase down why text input breaks under one customer's terminal and IME combination, turn a recurring support thread into a reusable component and a snapshot test, or push back on a runtime event shape that cannot be rendered well.\n\nWhat You Will Own\n\nThe terminal application: Information architecture and interaction across commands, navigation, input and editing, streamed output, progress, review, interruption, recovery, empty states, and errors that tell the user what to do next.\n\nCross-platform behavior: Correct, fast behavior across terminals, shells, multiplexers, remote sessions, macOS, Linux, Windows and WSL, non-English input and IMEs, and constrained customer environments.\n\nThe client boundary: The local session client, and a leading voice in the structured-event interface it consumes. You shape what the runtime emits so the UI does not have to infer intent from formatted text.\n\nStandards other contributors build against: Define the command, picker, progress, output, and review patterns that research and product engineers use when they add domain workflows, and keep the experience coherent as they do.\n\nResponsiveness under load: Streaming, cancellation, concurrency, and event-loop behavior for work that runs for a long time and must stay interruptible and understandable throughout.\n\nA coherent product across surfaces: Shared terminology, state, authentication, and handoffs between the terminal and the rest of our EDA product, so users moving between them do not have to learn two systems.\n\nArchitecture: Evolve a large Textual application toward reusable components and a clear line between product UI, domain logic, and runtime concerns.\n\nConfidence to change it: Snapshot and visual-regression coverage, packaging, installation, self-update, and the tests that make it safe to change an interactive application people depend on.\n\nWhat Makes You a Great Fit\n\n4+ years of software engineering experience, including significant time building and maintaining an interactive terminal application, TUI, or comparably rich local client — not command wrappers.\n\nExperience taking on an existing codebase and improving it without breaking what already worked.\n\nFamiliarity with what makes terminal software hard: keyboard and text input, rendering performance, inconsistent terminal capabilities, process and signal handling, and behavior that differs across platforms and environments.\n\nStrong engineering fundamentals. The application is written in Python and Textual; we weigh depth and judgment above prior experience with either.\n\nExperience with event-driven or asynchronous applications: streaming data, local processes, cancellation, concurrency, persistence, and recovery from partial failure.\n\nA high bar for interface details — defaults, error messages, empty states, wording — and a habit of fixing them before users report them.\n\nThe ability to debug across boundaries, from a keystroke in a terminal emulator through the application to the runtime.\n\nExperience testing interactive software, and judgment about which behavior is worth pinning down.\n\nComfort working with researchers and domain experts, and the ability to learn an unfamiliar technical domain well enough to represent an expert workflow accurately.\n\nPragmatic judgment about when to invest in a durable abstraction and when to ship the straightforward version.\n\nBonus Points\n\nExperience with any of the following is helpful, but not required:\n\nTextual, Rich, prompt-toolkit, curses, Bubble Tea, Ratatui, Ink, or another terminal UI framework\n\nPTYs, terminal emulation, multiplexers, or remote shell and host abstractions\n\nDesigning human-in-the-loop experiences for coding agents, AI tools, or other long-running automated systems\n\nCross-platform packaging, self-update systems, internationalization, IME support, or visual regression testing\n\nElectron or another desktop framework, particularly embedding a CLI, TUI, or agent runtime\n\nSemiconductors, EDA, or hardware engineering workflows\n\nEqual Employment Opportunity Statement\n\nNormal Computing is an Equal Opportunity Employer. We celebrate diversity and are committed to creating an inclusive environment for all employees. All qualified applicants will receive consideration for employment without regard to race, color, religion, sex, sexual orientation, gender identity, national origin, disability, veteran status, or any other legally protected status.\n\nAccessibility Accommodations\n\nNormal Computing is committed to providing reasonable accommodations to individuals with disabilities. If you need assistance or an accommodation due to a disability, please let us know at accommodations@normalcomputing.com.\n\nPrivacy Notice\n\nBy submitting your application, you agree that Normal Computing may collect, use, and store your personal information for employment-related purposes in accordance with our Privacy Policy.\n\nCompensation Range: $200K - $400K","company":"Normal Computing","rawCompany":"normal computing","city":"New York","state":"NY","isRemote":false,"isActive":false,"createdAt":"2026-09-09T08:57:20.612Z","occupations":[{"code":"15-1252.00","title":"Software Developers","slug":"software-developers"},{"code":"15-1299.08","title":"Computer Systems Engineers/Architects","slug":"computer-systems-engineers-architects"},{"code":"17-2112.02","title":"Validation Engineers","slug":"validation-engineers"}],"industries":[{"code":"513210","title":"Software Publishers","slug":"software-publishers"},{"code":"541511","title":"Custom Computer Programming Services","slug":"custom-computer-programming-services"},{"code":"541512","title":"Computer Systems Design Services","slug":"computer-systems-design-services"}],"jobPosting":{"@context":"https://schema.org","@type":"JobPosting","title":"Software Engineer, Terminal Interface","description":"Normal Computing | Build with Us\n\nNormal is an applied AI company solving the hardest problems in AI and silicon. We build foundational hardware and software for the semiconductor industry, critical AI infrastructure, and the broader systems that power our world, in partnership with the world's most advanced institutions. We work as one team across New York City, Silicon Valley (Mountain View), London, Copenhagen, and Seoul.\n\nThe Role\n\nNormal CLI is how semiconductor engineers do AI-assisted verification work. It is a large interactive terminal application, built in Python and Textual, that design verification engineers keep open all day, usually in environments we do not control: remote workstations inside chip companies, SSH sessions, tmux, Windows and WSL. Our users are accustomed to terminal products, and for many of them this is the first and only surface of Normal they will use. We expect that to remain true.\n\nWe are hiring the engineer who will own it as a product: productionizing what began as a research tool and giving it a dedicated end-user focus. You will own the interaction model and the information design — how people enter and edit instructions, how a long agent run stays legible while it streams, how tool use and proposed changes are presented for review, and how work is interrupted, resumed, and recovered after a failure. You will also own the local session client beneath it, and be a leading voice in the client API the rest of our product is built on.\n\nThe boundaries matter here. Our ML and research engineers keep the harness — the skills, tools, hooks, and model behavior that make the agent good at chip verification. You take the application those capabilities reach users through. You will sit on the product engineering team that also builds our desktop workbench, our web product, and our agent orchestration, so the terminal moves into the same product as everything else, with the same vocabulary, state, and quality bar.\n\nOn any given day, you might rework how a long verification run folds and summarizes itself so an engineer can read it at a glance, chase down why text input breaks under one customer's terminal and IME combination, turn a recurring support thread into a reusable component and a snapshot test, or push back on a runtime event shape that cannot be rendered well.\n\nWhat You Will Own\n\nThe terminal application: Information architecture and interaction across commands, navigation, input and editing, streamed output, progress, review, interruption, recovery, empty states, and errors that tell the user what to do next.\n\nCross-platform behavior: Correct, fast behavior across terminals, shells, multiplexers, remote sessions, macOS, Linux, Windows and WSL, non-English input and IMEs, and constrained customer environments.\n\nThe client boundary: The local session client, and a leading voice in the structured-event interface it consumes. You shape what the runtime emits so the UI does not have to infer intent from formatted text.\n\nStandards other contributors build against: Define the command, picker, progress, output, and review patterns that research and product engineers use when they add domain workflows, and keep the experience coherent as they do.\n\nResponsiveness under load: Streaming, cancellation, concurrency, and event-loop behavior for work that runs for a long time and must stay interruptible and understandable throughout.\n\nA coherent product across surfaces: Shared terminology, state, authentication, and handoffs between the terminal and the rest of our EDA product, so users moving between them do not have to learn two systems.\n\nArchitecture: Evolve a large Textual application toward reusable components and a clear line between product UI, domain logic, and runtime concerns.\n\nConfidence to change it: Snapshot and visual-regression coverage, packaging, installation, self-update, and the tests that make it safe to change an interactive application people depend on.\n\nWhat Makes You a Great Fit\n\n4+ years of software engineering experience, including significant time building and maintaining an interactive terminal application, TUI, or comparably rich local client — not command wrappers.\n\nExperience taking on an existing codebase and improving it without breaking what already worked.\n\nFamiliarity with what makes terminal software hard: keyboard and text input, rendering performance, inconsistent terminal capabilities, process and signal handling, and behavior that differs across platforms and environments.\n\nStrong engineering fundamentals. The application is written in Python and Textual; we weigh depth and judgment above prior experience with either.\n\nExperience with event-driven or asynchronous applications: streaming data, local processes, cancellation, concurrency, persistence, and recovery from partial failure.\n\nA high bar for interface details — defaults, error messages, empty states, wording — and a habit of fixing them before users report them.\n\nThe ability to debug across boundaries, from a keystroke in a terminal emulator through the application to the runtime.\n\nExperience testing interactive software, and judgment about which behavior is worth pinning down.\n\nComfort working with researchers and domain experts, and the ability to learn an unfamiliar technical domain well enough to represent an expert workflow accurately.\n\nPragmatic judgment about when to invest in a durable abstraction and when to ship the straightforward version.\n\nBonus Points\n\nExperience with any of the following is helpful, but not required:\n\nTextual, Rich, prompt-toolkit, curses, Bubble Tea, Ratatui, Ink, or another terminal UI framework\n\nPTYs, terminal emulation, multiplexers, or remote shell and host abstractions\n\nDesigning human-in-the-loop experiences for coding agents, AI tools, or other long-running automated systems\n\nCross-platform packaging, self-update systems, internationalization, IME support, or visual regression testing\n\nElectron or another desktop framework, particularly embedding a CLI, TUI, or agent runtime\n\nSemiconductors, EDA, or hardware engineering workflows\n\nEqual Employment Opportunity Statement\n\nNormal Computing is an Equal Opportunity Employer. We celebrate diversity and are committed to creating an inclusive environment for all employees. All qualified applicants will receive consideration for employment without regard to race, color, religion, sex, sexual orientation, gender identity, national origin, disability, veteran status, or any other legally protected status.\n\nAccessibility Accommodations\n\nNormal Computing is committed to providing reasonable accommodations to individuals with disabilities. If you need assistance or an accommodation due to a disability, please let us know at accommodations@normalcomputing.com.\n\nPrivacy Notice\n\nBy submitting your application, you agree that Normal Computing may collect, use, and store your personal information for employment-related purposes in accordance with our Privacy Policy.\n\nCompensation Range: $200K - $400K","datePosted":"2026-09-09T08:57:20.612Z","dateModified":"2026-09-09T08:57:20.612Z","hiringOrganization":{"@type":"Organization","name":"Normal Computing","sameAs":"https://jobsearcher.com"},"jobLocation":{"@type":"Place","address":{"@type":"PostalAddress","addressLocality":"New York","addressRegion":"NY","addressCountry":"US"}},"identifier":{"@type":"PropertyValue","name":"JobSearcher","value":"62b72c05673aa3aa5a1ec4e2"},"url":"https://jobsearcher.com/jobs/62b72c05673aa3aa5a1ec4e2"}}