Web, Desktop & Mobile client for Codex, Claude Code, OpenCode, Kimi, Augment Code, Qwen, fully end-to-end encrypted
$ npx -y skills add happier-dev/happier --agent claude-code
Run the curl in your terminal, the rest in Claude Code.
Repo: happier-dev/happier
What's inside
Run Claude Code, Codex, Gemini, OpenCode (and more) on your computerand continue seamlessly from your phone, browser, or desktop app.
End-to-end encrypted. Self-hostable. Built by developers, for developers.
Happier is an open-source, end-to-end encrypted, cross-device companion app and client for your AI coding agents.
It lets you run AI coding sessions locally on your computer, then continue and control them remotely โ from your phone, web UI, or desktop app, without losing context.
Whether youโre stepping away for a coffee or switching devices mid-task, Happier keeps your AI coding sessions alive and accessible.
Join the Discord to hear all of the latest news about Happier, report issues, discuss new ideas and request features. It would truly make us happier to hear your thoughts and feedback! ;)
Play Store app is in private beta, to access it:
curl -fsSL https://happier.dev/install | bash
Windows:
iwr https://happier.dev/install.ps1 -useb | iex
If you specifically want the npm package instead of the installer-managed lanes:
npm install -g @happier-dev/cli
happier auth login
Recommended first run:
happier instead of claude, codex or opencode# Instead of: claude
# Use: happier
happier
# Instead of: codex
# Use: happier codex
happier codex
# Instead of: opencode
# Use: happier opencode
happier opencode
# More providers:
happier gemini
happier kilo
happier kimi
happier qwen
Code solo, or invite a friend to jump into the session with you. Happier acts as a secure bridge between your local development environment and your other devices.
Happier is in alpha preview stage and might be buggy here and there. We are iterating fast and adding new features, improvements and bug fixes constantly.
You can also join the Discord to ask any questions or report any issues that you might have.
This project exists because we needed it ourselves, and we want it to evolve through real feedback. We aim to keep the community welcoming, and contributor-friendly, whether youโre signaling an issue or proposing a larger idea.
If something feels broken, missing, or awkward, we really want to hear about it. Happier grows through shared experience and collaboration.
Learn more about the best ways to contribute in CONTRIBUTING.md.
We originally started as contributors to Happy, submitting fixes, improvements, and new features upstream.
We were using it daily for work and genuinely loved the concept.
Over time, we realized that our own needs required faster iteration that we could not comfortably explore within the main project.
So we started building them for ourselves.
After weeks of refining, fixing, and extending the foundation, we decided to share Happier so others could try it, use it, and help shape what comes next.
Happier is about exploring a faster-moving, more collaborative direction, while remaining deeply grateful for the foundation Happy provided. We loved and still love Happy. โค๏ธ Happier would not exist without it.
Broad provider support Works with Claude Code, Codex, OpenCode, Gemini, GitHub Copilot, Kiro, Pi, Kilo, Kimi, Qwen, Augment, and any custom ACP-compatible CLI โ all from one unified interface.
Browse, follow, and take over existing sessions Open any existing Codex, Claude, or OpenCode session on your machine directly in Happier, follow a live session started outside the app in real time, or take control and import it into Happier with full continuity.
Session forking and replay Fork a session at any message without losing context. Uses provider-native forking when available (OpenCode, Codex); falls back to Happier Replay for any provider.
Session handoff between machines Move a live session โ including provider state and project directory โ to another machine. The same session ID stays in place; the active machine changes.
Attach to a running session
Start a session from the app and later reconnect to it in your terminal with happier attach, or the other way around โ switch between local CLI control and remote app control at any time.
Persistent sessions Resume sessions after restarts; archive and return to them later. Supports tmux-backed resume for terminal-started sessions.
Seamless switching Move between terminal, desktop app, web, and mobile while keeping full session context. Multi-device continuity is built in.
Collaborative sessions Share a live session with teammates or via view-only public links. Friends can be added by username directly in the app.
Agents, subagents, and Claude teams Launch parallel review, plan, or delegate runs from any session. Create and manage Claude teams, send messages to individual teammates, and monitor all subagents from the Agents panel.
Voice assistant โ a real AI colleague, not just speech-to-text The voice agent is a first-class assistant backed by the same action system as the UI and CLI. It monitors all your running sessions, can switch focus between them, reads pending permission requests and answers them on your behalf, sends messages to any session you dictate to, and discusses what your agents are doing with full access to recent session context. Every action it can take maps to a Happier action that can be individually approval-gated. Runs on a daemon-backed AI brain (Claude or any configured backend) or a local OpenAI-compatible endpoint, with ElevenLabs realtime, BYO ElevenLabs, Kokoro neural TTS, and device/Google STT as the voice layer.
Inbox
A global attention center for permission requests, user-action prompts (AskUserQuestion, ExitPlanMode), approval-gated actions, and unread sessions โ across all sessions and machines at once.
Pending queue Queue messages while the agent is busy, offline, or not yet ready. Edit, reorder, and remove queued messages before they run. The queue is session-wide and shared with collaborators.
Steering and interrupts Steer compatible sessions while they are running. New messages are injected into the active turn when the backend supports it; otherwise they queue safely.
Git and file browser Full repository-aware workspace inside sessions and projects: browse files, review diffs, edit files, and run complete Git operations (commit, pull, push, branch, stash, worktrees, remotes) without leaving the app.
Projects and worktrees Persistent repository surfaces outside sessions. Browse a repo, inspect source control state, collect review comments, switch between worktrees, and then launch a session into the exact checkout context.
Embedded terminal A live shell backed by your connected machine, dockable in the bottom panel, sidebar, or as a full-screen โ shared across session and project views.
Attachments Attach files and images to any message in new or existing sessions. Works across desktop, web, and mobile.
MCP servers Define MCP servers once in Happier and reuse them across all providers, all machines, and all sessions. Previews the effective tool surface before you start. Works with native-MCP and shell-bridge providers alike.
Prompts and skills
Manage reusable system prompts and skill bundles in one synced library. Attach them to coding agents, voice, or profiles; install/export to provider-native locations; integrate with skills.sh registries.
Connected services and quota monitoring Link Codex, Claude, and other provider subscriptions once; reuse credentials across backends and machines. Monitor usage and quota snapshots directly in the app.
Profiles
Save named backend configurations (endpoint, auth scheme, environment variables, secrets) and select them at session start or via --profile from the CLI.
Custom ACP backends Add any ACP-compatible CLI as a selectable backend โ internal tools, review bots, planning agents โ without modifying Happier's source.
Local memory search Build a machine-local index from your decrypted transcripts and search past session context from the app, or let coding and voice agents use memory tools for recall.
Mode, model, and permission controls Pick model, engine, mode (plan/build), reasoning effort, and permission level per session. Session-only overrides are separate from account defaults.
Multi-server support Use Happier Cloud, personal self-host, and company self-host side by side. Auth is scoped per server; daemon state is isolated per server profile.
Smart notification routing Notification taps open the exact session and server that needs attention. Permission actions and approvals are routed safely, never silently applied to the wrong server.
Server feature toggles Server owners can selectively disable capabilities (voice, social, bug reports, etc.) so users only see what is appropriate for their deployment.
In-app bug reports and diagnostics
Submit bug reports with attached diagnostics, Sentry artifacts, and happier doctor --json snapshots. Crash recovery shows a safe fallback screen with pre-crash diagnostics preserved.
Enterprise-ready
Run your own relay server and lock it down to your organization. Supports GitHub OAuth with org/team membership gating, OIDC (Okta, any provider, with per-provider user/email/group allowlists and RFC 9207 iss passthrough), mTLS (certificate-based auth via reverse proxy or direct, with SAN email/UPN identity mapping), and keyless external auth for SSO-only environments.Configurable auto-provisioning, offboarding re-checks at configurable intervals, and strict vs. permissive enforcement.Storage policy is independently configurable: end-to-end encrypted (default), mixed, or plaintext-only (for organizations that manage encryption at the infrastructure layer).Server-level feature flags let you enable or disable voice, automations, social, attachments, bug report uploads, embedded terminal, session handoff, and more โ all via environment variables, advertised to clients at runtime so the UI adapts automatically.Rate limiting, file transfer size limits, session retention policies, and a diagnostics endpoint with configurable access control (owner-only or all authenticated users) are all included. Deployable via Docker, with PostgreSQL, SQLite or MySQL as the database backend.
Happier is designed with privacy as a foundation, not an afterthought.
End-to-end encryption
Built using modern cryptography (TweetNaCl).
Zero-knowledge architecture
Your code is encrypted on your devices before it ever hits the wire.
Servers cannot read your data. Encryption keys never leave your devices.
Built with love from Switzerland
Developed in Switzerland, with a strong focus on data protection and developer transparency.
If you are feeling adventurous, you can use our nightly dev builds (or run from source).
In that case, you must run everything from the dev releases (CLI, app, daemon and server). The hosted Happier Cloud server (app.happier.dev / api.happier.dev), is running the preview channel currently, so not all the dev features might be available from it.
Please note that dev can be highly unstable. It can contain partial commits and can break at any moment.
curl -fsSL https://happier.dev/install-dev | bash
iwr https://happier.dev/install-dev.ps1 -useb | iex
Important! Then you need to run hdev instead of happier!
This allows installing the different releases alongside eachother.
If you want happier to map to hdev, add this to your .bashrc/.zshrc:
alias happier='hdev'
dev does not have a hosted web app. To use the dev web UI, you must run your own self-hosted server from the dev nightly builds/source.
See below
api.happier.dev and the hosted web UI at https://app.happier.devHappier is 100% self-hostable. It's even the most recommended way to run it, even if we also offer an end-to-end encrypted cloud server (app.happier.dev / api.happier.dev).
Think of the relay server as the long-running process which allows your mobile device/UI to connect to your machines. It stores all your sessions, messages and settings.
It is lightweight, and can run as a simple service on your computer. You can then access it from your mobile devices using Tailscale Serve (as long as your computer is running).
Simply run the self-host guided setup on your computer:
happier relay host install --mode system
The self-host runtime follows the public release-ring model (stable, preview, dev) via --channel stable|preview|dev.
By default is uses an SQLite database.
The relay server can also run on a docker container, using the pre-built images or building from source:
Thanks to our community, you can also easily install Happier in Proxmox using helper scripts:
npm i -g yarn
git clone https://github.com/happier-dev/happier.git
cd happier
yarn
yarn build
yarn cli:activate
yarn tui
From the monorepo root, the yarn scripts run in repo-local mode (stackless + isolated per checkout).
These scripts wrap hstack with repo-local defaults so you can run from source safely.
Most-used commands:
yarn dev: local dev stack (server + UI + daemon)yarn tui, yarn tui:with-mobile: dev stack in the integrated TUI (logs + controls)yarn build, yarn start, yarn stop: prod-like build/start/stop flowsyarn auth login, yarn daemon, yarn happier: auth + daemon + CLI flowsyarn env list|set|unset: manage persisted env vars for your repo-local stackyarn logs, yarn logs:all|server|expo|ui|daemon|service: stream/select logsyarn service:*: install/manage OS serviceyarn tailscale:*: configure/query Tailscale Serve URLyarn mobile, yarn mobile:install, yarn mobile-dev-client: mobile workflowsyarn providers, yarn eas, yarn setup, yarn remote, yarn self-host, yarn menubar: advanced workflowsRun from a monorepo clone docs
Arguments:
-- (Yarn v1), for example:
yarn logs -- --component=daemon --lines 200 --no-followyarn auth login -- --method=mobile --no-openyarn service:enable -- --auth-now -- --method=web --webapp=hostedhstack and npx:
hstack/happier from any terminal using this clone, run yarn cli:activate.hstack via npx (for example npx --yes -p @happier-dev/stack@latest hstack <command>), but that is not the same as repo-local wrappers from this checkout.Happier is completely open-source. We built this because we wanted a more powerful, more social way to interact with AI agents - and we want to build it in the open, shaped by the people who actually use it.
This project exists because we needed it ourselves - and we want it to evolve through real feedback. We aim to keep the community welcoming, and contributor-friendly, whether youโre signaling an issue or proposing a larger idea. You are always welcome, whether youโre reporting a small bug or proposing a larger idea.
What that means in practice:
If something feels broken, missing, or awkward, we want to hear about it. Happier grows through shared experience and collaboration.
See CONTRIBUTING.md for development setup and guidelines.
MIT License โ see LICENSE for details.
โธป
Not affiliated with or endorsed by Anthropic, OpenAI, or Google.
Code faster. Code together. Be Happier.
.claude/
CLAUDE.md
commands/
edison.list.md
edison.plan-mode.md
edison.qa-audit.md
edison.qa-bundle.md
edison.qa-new.md
edison.qa-promote.md
edison.qa-round.md
edison.qa-show.md
edison.qa-transition.md
edison.qa-validate.md
edison.read.md
edison.rules-current.md
edison.rules-tdd.md
edison.session-context.md
edison.session-list.md
edison.session-next.md
edison.session-show.md
edison.session-start.md
edison.session-status.md
edison.task-allocate-id.md
edison.task-audit.md
edison.task-backlog-coherence.md
edison.task-blocked.md
edison.task-claim.md
edison.task-done.md
edison.task-link.md
edison.task-list.md
edison.task-new.md
edison.task-ready.md
edison.task-relate.md
edison.task-remediate-audit.md
edison.task-show.md
edison.task-similar.md
edison.task-split.md
edison.task-status.md
edison.task-transition.md
edison.task-waves.md
hooks/
_edison_guard.sh
commit-guard.sh
compaction-reminder.sh
enforce-worktree.sh
inject-session-context.sh
inject-task-rules.sh
prevent-destructive-git.sh
remind-tdd.sh
session-cleanup.sh
session-init.sh
stop-continuation.sh
settings.json
.coderabbit.yaml
.cursor/
agents/
api-builder.md
code-reviewer.md
component-builder.md
database-architect.md
feature-implementer.md
test-engineer.md
commands/
edison.list.md
edison.plan-mode.md
edison.qa-audit.md
edison.qa-bundle.md
edison.qa-new.md
edison.qa-promote.md
edison.qa-round.md
edison.qa-show.md
edison.qa-transition.md
edison.qa-validate.md
edison.read.md
edison.rules-current.md
edison.rules-tdd.md
edison.session-context.md
edison.session-list.md
edison.session-next.md
edison.session-show.md
edison.session-start.md
edison.session-status.md
edison.task-allocate-id.md
edison.task-audit.md
edison.task-backlog-coherence.md
edison.task-blocked.md
edison.task-claim.md
edison.task-done.md
edison.task-link.md
edison.task-list.md
edison.task-new.md
edison.task-ready.md
edison.task-relate.md
edison.task-remediate-audit.md
edison.task-show.md
edison.task-similar.md
edison.task-split.md
edison.task-status.md
edison.task-transition.md
edison.task-waves.md
rules/
context.mdc
delegation.mdc
edison.mdc
implementation.mdc
validation.mdc
.daggerignore
.dockerignore
.fallowrc.jsonc
.github/
actions/
bootstrap-minisign/
action.yml
bootstrap-minisign.sh
install-yarn-dependencies/
action.yml
release-actor-guard/
action.yml
setup-apple-codesigning/
action.yml
setup-xcode/
action.yml
CODEOWNERS
copilot-commit-instructions.md
desktop-2000.png
feature-policy/
preview.json
production.json
FUNDING.yml
header-release.png
header.png
illustration.png
ISSUE_TEMPLATE/
bug.yml
config.yml
feature.yml
task.yml
logotype-dark.png
mobile-2000.png
pull_request_template.md
supported-ai-providers.png
workflows/
build-tauri.yml
build-ui-mobile-local.yml
cli-smoke-test.yml
deploy-on-deploy-branch.yml
deploy.yml
extended-db-tests.yml
issue-triage-manual.yml
issue-triage.yml
nightly-dev.yml
promote-branch.yml
promote-docs.yml
promote-server.yml
promote-ui.yml
promote-website.yml
providers-contracts.yml
publish-cli-binaries.yml
publish-docker.yml
publish-github-release.yml
publish-hstack-binaries.yml
publish-server-runtime.yml
publish-ui-mobile-dev.yml
publish-ui-release.yml
publish-ui-web.yml
release-npm.yml
release-verify.yml
release.yml
roadmap-add-to-project.yml
roadmap-bootstrap-labels.yml
self-host-e2e.yml
stress-tests.yml
tests-dispatch.yml
tests.yml
.gitignore
.pal/
conf/
cli_clients/
claude.json
codex.json
gemini.json
systemprompts/
clink/
project/
agent-api-builder.txt
agent-code-reviewer.txt
agent-component-builder.txt
agent-database-architect.txt
agent-feature-implementer.txt
agent-test-engineer.txt
codereviewer.txt
default.txt
planner.txt
validator-coderabbit.txt
validator-global.txt
validator-performance.txt
validator-security.txt
.vscode/
settings.json
.watchmanconfig
AGENTS.md
app.json
apps/
bootstrap/
.gitignore
bin/
hsetup.mjs
package.json
scripts/
buildBinary.mjs
buildBinaryTarget.mjs
buildBinaryTarget.test.mjs
buildSharedDeps.mjs
writeDistBinWrappers.mjs
src/
bin/
hsetup.interactive.test.ts
hsetup.ts
writeDistExecutableWrapper.test.ts
writeDistExecutableWrapper.ts
index.ts
integrations/
tailscale/
ensureTailscaleInstalled.ts
ssh/
index.test.ts
index.ts
systemTasks/
happierCli.test.ts
happierCli.ts
kinds/
daemonService.test.ts
daemonService.ts
secureAccessTailscale.test.ts
secureAccessTailscale.ts
setupThisComputer.ts
localDaemonCli.ts
localFirstPartyCommand.test.ts
localFirstPartyCommand.ts
registry.test.ts
registry.ts
relayRuntimeTasks.test.ts
relayRuntimeTasks.ts
remoteFirstPartyPayloadInstaller.test.ts
remoteFirstPartyPayloadInstaller.ts
remoteSshBootstrapTasks.test.ts
remoteSshBootstrapTasks.ts
runCommand.test.ts
runCommand.ts
taskRuntime.ts
tsconfig.json
vitest.config.ts
cli/
.cursorrules
.env.dev
.env.dev-local-server
.env.integration-test
.envrc.example
.gitattributes
.gitignore
.npmignore
.release-it.json
.release-it.notes.js
.vscode/
launch.json
AGENTS.md
apps/
cli/
scripts/
forkSession.mjs
bin/
_importRuntimeEntrypoint.mjs
_prepareRuntimeEntrypoint.mjs
_resolveRuntimeEntrypoint.mjs
happier-dev.mjs
happier-mcp-remote-bridge.mjs
happier-mcp-stdio-launcher.mjs
happier-mcp.mjs
happier.mjs
CLAUDE.md
CONTRIBUTING.md
package.json
README.md
roadmap.md
scripts/
__tests__/
buildSharedDeps.test.ts
bundleWorkspaceDeps.test.ts
childProcessOptions.test.ts
happierBinPreflightHoistedNodeModules.test.ts
happierDependencyPreflight.test.ts
importCycleGuard.test.ts
packTarball.npmExecpath.test.ts
patchPackedTarballForBun.test.ts
prepareRuntimeEntrypoint.test.ts
publishBundledDependencies.test.ts
publishedScriptSurface.test.ts
resolveRuntimeEntrypoint.test.ts
ripgrep_launcher.test.ts
runPkgrollBuild.test.ts
runVitestShards.test.ts
serverHttpBaseUrlOwnership.test.ts
testkit/
cliBinPreflightSandbox.ts
packageLayoutSandbox.ts
vitestLaneSeparation.test.ts
withNodeHeapLimit.test.ts
build.mjs
build.test.ts
buildOutputs.spawnHooks.integration.test.ts
buildSharedDeps.mjs
bundleWorkspaceDeps.mjs
childProcessOptions.cjs
claude_launcher_runtime.cjs
claude_launcher_runtime.test.ts
claude_launcher_runtime.win32Reliability.test.ts
claude_local_launcher.cjs
claude_remote_launcher.cjs
cleanupHappierTestUserKeychainResidue.mjs
env-wrapper.cjs
finalizeDist.mjs
finalizeDist.test.ts
importCycleGuard.baseline.json
importCycleGuard.mjs
link-dev.cjs
link-dev.win32NpmShim.test.ts
node_pty_relay.cjs
optionalWorkspaceBundleLock.mjs
optionalWorkspaceBundleLock.test.ts
packTarball.mjs
permission_hook_forwarder.cjs
postinstall/
fix-node-pty-spawn-helper-permissions.cjs
fix-node-pty-spawn-helper-permissions.test.ts
postpack/
patchPackedTarballForBun.mjs
prepack-script.test.mjs
ripgrep_launcher.cjs
rmDirSafe.mjs
rmDirSafe.test.ts
rmDist.mjs
rmDist.test.ts
runPkgrollBuild.mjs
runtime/
loadTransformersFromRuntime.mjs
runVitestShards.mjs
session_hook_forwarder.cjs
setup-dev.cjs
shims/
git
rg
rg.test.ts
statusline_forwarder.cjs
syncPackageDist.mjs
syncPackageDist.test.ts
terminal_launch_spec_runner.cjs
terminal_launch_spec_runner.test.ts
test-continue-fix.sh
tool-trace-extract.ts
tool-trace-fixtures-v1.ts
tool-trace-fixtures.v1.allowlist.txt
unpack-tools.cjs
unpack-tools.test.ts
vitestWorkspacePackageResolution.ts
withNodeHeapLimit.mjs
src/
activity/
notifications/
activityNotificationEvent.ts
buildActivityNotificationContent.ts
buildAgentRequestNotificationContent.ts
dispatchActivityNotification.test.ts
dispatchActivityNotification.ts
sendExpoPushActivityNotification.ts
sendWebhookActivityNotification.ts
agent/
acp/
__tests__/
AcpBackend.acpFs.test.ts
AcpBackend.authenticate.test.ts
AcpBackend.configOptions.test.ts
AcpBackend.dispose.killsProcessTree.test.ts
AcpBackend.extensionDispatch.test.ts
AcpBackend.forkSession.test.ts
AcpBackend.fsEnabled.test.ts
AcpBackend.fsMethods.test.ts
AcpBackend.initDelay.test.ts
AcpBackend.loadSession.cleanupOnFailure.test.ts
AcpBackend.messageChunkDedup.test.ts
AcpBackend.permissionAutoApprove.noPrompt.test.ts
AcpBackend.permissionDeniedCleanup.test.ts
AcpBackend.permissionOptionSelection.openCodeFamily.test.ts
AcpBackend.permissionSeed.toolCallUpdateFallback.test.ts
AcpBackend.planLifecycle.test.ts
AcpBackend.promptSubmissionEvidence.test.ts
AcpBackend.promptUsage.test.ts
AcpBackend.realSdkMcpServers.test.ts
AcpBackend.responseCompletionError.idle.test.ts
AcpBackend.sendPrompt.ackOrUpdate.test.ts
AcpBackend.sessionInfo.test.ts
... 1600 moreShowing a partial view of a very large repo.
FAQ
happier is a Claude Code plugin with 19 hand-picked skills for development work, indexed on Flowy. Install it with the command on its page. It includes happier-session-control, attack-conclusion, decompose-gates. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.