Skip to content

Releases: ShahabSL/twoman

Twoman 1.0.7

Choose a tag to compare

@ShahabSL ShahabSL released this 09 May 00:53

Twoman 1.0.7

Twoman 1.0.7 is the multi-client stability and release-versioning patch for the
1.0 Go dataplane line.

Changes

  • Linux CLI, Android, and desktop profiles now keep a local per-installation
    helper peer ID. Multiple users can import the same twoman:// route without
    replacing each other on the broker.
  • Linux CLI explicit --http-port 0 --socks-port 0 now lets the helper bind
    ephemeral ports directly, avoiding the pre-reserve race seen during
    concurrent startup stress tests.
  • Adaptive upload now includes an error cooldown after host-side resets, so it
    does not immediately ramp back into a throttled upload state.
  • Release metadata is now first-class across the product: CLI/helper binaries,
    server-control installs, hidden-agent deploys, and authenticated broker
    health expose product version, build commit, and build time where applicable.
  • The Linux client installer can install a specific release:
    install-linux.sh --version 1.0.7.
  • The server installer can bootstrap from a specific release tag:
    scripts/install_twoman.sh --version 1.0.7.

Validation

  • helper-agent: go test ./...
  • client-cli: go test ./...
  • Android unit tests: testArm64DebugUnitTest testDesktopDebugUnitTest
  • Desktop Tauri tests: cargo test
  • Multi-client live stress:
    • WARP-routed hidden server: 6 helpers, 144/144 requests, zero peer replacement/errors.
    • Direct hidden server A: 6 helpers, 144/144 requests on recheck, zero peer replacement/errors.
    • Direct hidden server B: 6 helpers, 144/144 requests, zero peer replacement/errors.

Release Assets

This release includes the same production asset set as 1.0.6:

  • app-arm64-release.apk
  • app-arm64-release.aab
  • Twoman_1.0.7_amd64.AppImage
  • Twoman_1.0.7_amd64.deb
  • Twoman-1.0.7-1.x86_64.rpm
  • Twoman_1.0.7_x64-portable.zip
  • Twoman_1.0.7_x64-setup.exe
  • Twoman_1.0.7_x64_en-US.msi
  • twoman-cli-linux-amd64-v1.0.7.tar.gz
  • SHA256SUMS

No debug APK should be included.

Twoman 1.0.6

Choose a tag to compare

@ShahabSL ShahabSL released this 08 May 09:06

Twoman 1.0.6

Twoman 1.0.6 is a client packaging and local-port stability patch for the
1.0 Go dataplane release line.

Changes

  • Rebuilt desktop release packages with the current Go helper sidecar so
    dynamic local ports are reported as assigned ports, not 127.0.0.1:0.
  • Desktop helper launch now suppresses duplicate helper log writes when the
    GUI already redirects sidecar output into helper.log.
  • Desktop and Linux CLI configs now use the same adaptive upload defaults as
    the current Android runtime: bounded data workers with adaptive backoff
    instead of fixed high-concurrency uploads.
  • Desktop and Linux CLI imports now treat missing or zero local ports in shared
    profile text as stable platform defaults. Explicit ephemeral ports remain
    available for advanced one-shot tests, but long-running services no longer
    inherit accidental :0 proxy endpoints from mobile-generated profiles.
  • Android share text now omits dynamic local ports so desktop and Linux clients
    pick their own stable local defaults on import.

Operational Notes

  • Use this release instead of reinstalling the first 1.0.5 Windows packages.
    Installers and Android packages behave more predictably when a fixed build
    has a new version number.
  • Linux service installs should use the default stable local ports. Only use
    twoman connect --http-port 0 --socks-port 0 for intentional ephemeral
    one-shot sessions.

Release Assets

This release includes:

  • app-arm64-release.apk
  • app-arm64-release.aab
  • Twoman_1.0.6_amd64.AppImage
  • Twoman_1.0.6_amd64.deb
  • Twoman-1.0.6-1.x86_64.rpm
  • Twoman_1.0.6_x64-portable.zip
  • Twoman_1.0.6_x64-setup.exe
  • Twoman_1.0.6_x64_en-US.msi
  • twoman-cli-linux-amd64-v1.0.6.tar.gz
  • SHA256SUMS

No debug APK is included.

Validation

  • helper-agent: go test ./...
  • client-cli: go test ./...
  • twoman_control: focused pytest control/profile-share suite
  • Go helper/agent Node broker E2E: tests/run_e2e_go_node_http.sh
  • Linux CLI E2E: tests/run_client_cli_e2e.sh
  • Android: :app:testArm64DebugUnitTest
  • Desktop: npm run build
  • Desktop Tauri: cargo test --locked
  • Host broker: node --check broker.js and node --check app.js

Twoman 1.0.5

Choose a tag to compare

@ShahabSL ShahabSL released this 07 May 23:55

Twoman 1.0.5

Twoman 1.0.5 is a client stability and diagnostics patch for the Go dataplane
release line.

Changes

  • Android no longer advertises the legacy 198.18.0.2 virtual DNS address
    unless a real local DNS proxy is implemented. This fixes VPN start failures
    where Android Private DNS or UDP DNS attempted to use that unreachable
    client-side address through the tunnel.
  • Android profiles now filter resolver addresses before handing them to
    VpnService.Builder, and fall back to real public resolvers when old
    imported profiles contain only the legacy virtual DNS address.
  • Android VPN setup now declares the active underlying network when available,
    matching normal VPN client practice for upstream connectivity.
  • Mobile helper configs now keep the fast Go dataplane defaults, including
    adaptive upload and larger data upload workers.
  • Helper and agent configs now support explicit DNS timeout, DNS cache TTL, and
    DNS in-flight limits so slow resolvers fail predictably instead of stalling
    the runtime.
  • Helper and agent services can write logs to configured files, which makes
    server-side diagnosis possible after systemd restarts.

Android Asset Refresh

  • The Android APK/AAB were refreshed after initial v1.0.5 publication to bind
    helper broker sockets to Android's underlying physical network before the VPN
    route is established. This fixes newer Pixel devices that could start the VPN
    UI but then loop or time out the broker control plane.
  • The refreshed APK was installed on a Pixel 6a, started in VPN mode with dynamic
    HTTP/SOCKS ports, and carried HTTP traffic through the tunnel.

Operational Notes

  • Users on Android 1.0.2 or older should upgrade before testing current
    connection strings. Old APKs can still hit the fake-DNS timeout even when the
    server and host are healthy.
  • The generated private connection strings have been regenerated without the
    legacy virtual DNS value.
  • Server2 still depends on WARP for reaching the host; if WARP cannot complete
    TLS to the public host, Toork/Nima direct-exit profiles can still work while
    Server2 fails.

Release Assets

This release includes:

  • app-arm64-release.apk
  • app-arm64-release.aab
  • Twoman_1.0.5_amd64.AppImage
  • Twoman_1.0.5_amd64.deb
  • Twoman-1.0.5-1.x86_64.rpm
  • Twoman_1.0.5_x64-portable.zip
  • Twoman_1.0.5_x64-setup.exe
  • Twoman_1.0.5_x64_en-US.msi
  • twoman-cli-linux-amd64-v1.0.5.tar.gz
  • SHA256SUMS

No debug APK is included.

Validation

  • helper-agent: go test ./...
  • client-cli: go test ./...
  • Android: :app:testArm64DebugUnitTest
  • Android release: signed :app:assembleArm64Release, verified with APK
    Signature Scheme v2
  • Desktop: npm run build
  • Desktop Tauri: cargo test --locked
  • Host broker: node --check broker.js and node --check app.js

Twoman 1.0.4

Choose a tag to compare

@ShahabSL ShahabSL released this 07 May 03:54

Twoman 1.0.4

Twoman 1.0.4 is a patch release for clients that use dynamic local proxy
ports.

Changes

  • Fixed dynamic local port handling in the Go helper. Explicit
    http_listen_port: 0 and socks_listen_port: 0 now remain dynamic instead
    of being rewritten to the fixed fallback ports 8080 and 1080.
  • Fixed the Windows desktop client port validation. Profiles that request
    dynamic ports now accept the helper's assigned ports instead of treating
    0 as a literal expected listener.
  • Added E2E coverage so dynamic helper ports must bind to real assigned ports
    and must not silently fall back to 8080 or 1080.

Release Assets

This release includes:

  • app-arm64-release.apk
  • app-arm64-release.aab
  • Twoman_1.0.4_amd64.AppImage
  • Twoman_1.0.4_amd64.deb
  • Twoman-1.0.4-1.x86_64.rpm
  • Twoman_1.0.4_x64-portable.zip
  • Twoman_1.0.4_x64-setup.exe
  • Twoman_1.0.4_x64_en-US.msi
  • twoman-cli-linux-amd64-v1.0.4.tar.gz
  • SHA256SUMS

No debug APK is included.

Validation

Validated before release:

  • Go helper-agent tests
  • Go client CLI tests
  • Go Node backend end-to-end test
  • Headless Linux client CLI end-to-end test
  • Desktop client end-to-end test
  • Desktop Rust tests on Linux and Windows
  • Android release APK build
  • Desktop web production build
  • GitHub CI
  • Tracked-source secret scan

Twoman 1.0.3

Choose a tag to compare

@ShahabSL ShahabSL released this 07 May 00:31

Twoman 1.0.3

Twoman 1.0.3 is the multi-exit and headless-client release on top of the Go
dataplane shipped in 1.0.2.

Changes

  • Added pinned multi-exit routing. Multiple hidden servers can now point at the
    same public host broker, and a client profile can set targetAgentPeerLabel
    to force one specific exit.
  • Added the headless Linux client CLI bundle. The normal flow is now twoman import, twoman connect, twoman status, and twoman disconnect; users no
    longer need to pass helper binary paths for regular use.
  • Polished the server command UX. twoman now prints a fast non-interactive
    overview, while twoman tui opens the management UI.
  • Hardened hidden-server deploys that use custom SSH ports or rebuilt hosts by
    supporting isolated SSH known-hosts files and controlled host-key updates.
  • Documented the shared-host, multiple-hidden-agent topology in the main README.

Release Assets

This release includes:

  • app-arm64-release.apk
  • app-arm64-release.aab
  • Twoman_1.0.3_amd64.AppImage
  • Twoman_1.0.3_amd64.deb
  • Twoman-1.0.3-1.x86_64.rpm
  • Twoman_1.0.3_x64-portable.zip
  • Twoman_1.0.3_x64-setup.exe
  • Twoman_1.0.3_x64_en-US.msi
  • twoman-cli-linux-amd64-v1.0.3.tar.gz
  • SHA256SUMS

No debug APK is included.

Validation

Validated before release:

  • Go helper-agent tests
  • Go client CLI tests
  • Go Node backend end-to-end test
  • Headless Linux client CLI end-to-end test
  • Desktop client end-to-end test
  • Android release APK/AAB build
  • Linux Tauri AppImage, deb, and rpm build
  • Windows MSI, NSIS setup, and portable ZIP packaging
  • Tracked-source secret scan
  • Release-asset secret scan

Acknowledgements

Thanks again to @motixo for the Go dataplane and
cipher migration pull requests that established the 1.0 release direction. This
release keeps that work as the production path and adds the multi-exit and CLI
UX needed to operate multiple exits cleanly from one public host.

Twoman 1.0.2

Choose a tag to compare

@ShahabSL ShahabSL released this 06 May 05:28

Twoman 1.0.2

Twoman 1.0.2 is the corrected Go dataplane release package.

It supersedes the incomplete 1.0.1 asset set by shipping the full Android,
Linux, and Windows release artifacts and by fixing the live managed-host
profile issue found during physical Android testing.

Fixes

  • Fixed the Go HTTP down-poll transport so hidden-server agents cannot hang
    forever on stale WARP/WireProxy connections. Down GET requests now have a
    bounded request context and response-header timeout.
  • Disabled data-down streaming by default for the cPanel/Passenger managed-host
    profile. The live host buffers/delays chunked streaming responses, which can
    leave OPEN frames queued on the broker and cause client-side open timed out
    failures.
  • Made Windows sidecar packaging accept a prebuilt Go helper executable. This
    lets release builds cross-compile the Windows Go helper from WSL when a
    Windows Go toolchain is not installed, while still building the Windows
    gateway, tunnel sidecar, MSI, NSIS installer, and portable ZIP on Windows.
  • Rebuilt Android, Linux desktop, and Windows desktop artifacts from the patched
    Go helper/agent code.

Release Assets

This release includes only release artifacts:

  • app-arm64-release.apk
  • app-arm64-release.aab
  • Twoman_1.0.2_amd64.AppImage
  • Twoman_1.0.2_amd64.deb
  • Twoman-1.0.2-1.x86_64.rpm
  • Twoman_1.0.2_x64-portable.zip
  • Twoman_1.0.2_x64-setup.exe
  • Twoman_1.0.2_x64_en-US.msi
  • SHA256SUMS

No debug APK is included.

Validation

Validated before release:

  • go test ./... in helper-agent/
  • tests/run_e2e_go_node_http.sh
  • tests/run_desktop_client_e2e.sh
  • Android signed 1.0.2 APK installed on a physical Pixel 6a
  • Android profile import through twoman://profile?data=...
  • Android Proxy mode through both SOCKS and HTTP ports
  • Android VPN mode with Android tun0 network validation
  • Android Chrome traffic through VPN to api.ipify.org
  • Linux Tauri AppImage/deb/rpm build
  • Linux AppImage extraction with patched sidecars present
  • Windows helper sidecar live SOCKS and HTTP checks
  • Windows desktop executable smoke launch
  • Windows MSI, NSIS setup, and portable ZIP packaging
  • Exact secret-value scan across tracked source and release artifacts

Acknowledgements

Thanks again to @motixo for the Go dataplane and
cipher migration pull requests that established the 1.0 release direction. This
patch release keeps that direction and closes the packaging/runtime gaps found
while validating the release on real Android, Linux, and Windows clients.

Twoman 1.0.1

Choose a tag to compare

@ShahabSL ShahabSL released this 05 May 15:04

Twoman 1.0.1

Twoman 1.0.1 is the first packaging fix release after 1.0.0.

The 1.0.0 tag introduced the Go dataplane, but the release was notes-only and
the first post-merge CI run exposed release plumbing gaps. This patch release
keeps the same Go dataplane and fixes the missing release assets, CI setup, and
installer support files.

Fixes

  • Restored requirements.txt for Python control tooling used by installers,
    cPanel automation, and desktop TUI tests.
  • Restored hidden-server watchdog and sample config files used by manual and
    scripted deploy paths.
  • Fixed GitHub Actions Android setup so sdkmanager is resolved from the
    runner Android SDK path.
  • Added Tauri Linux build prerequisites to CI before cargo check and made
    that package install non-interactive with a bounded timeout.
  • Added nested Go module cache configuration for helper-agent/go.mod.
  • Removed stale desktop README references to deleted frozen e2e scripts.

Release Assets

This release includes built artifacts:

  • Android arm64 signed release APK.
  • Android arm64 signed release AAB.
  • Android arm64 debug APK for smoke testing.
  • Linux desktop TUI bundle with the Go helper sidecar.
  • Standalone Go helper-agent binaries for Linux amd64 and arm64.
  • SHA-256 checksum file for uploaded artifacts.

Windows desktop artifacts are not attached from Linux CI because Windows
desktop packaging should be produced on a Windows runner or release host.

Validation

GitHub Actions on main passed after the CI fixes:

  • relay-tests
  • android-build

Local validation before publishing:

  • Python compile checks for control/runtime support modules.
  • Go helper-agent tests.
  • Node broker parse checks.
  • Shell parse checks.
  • Go Node HTTP e2e.
  • Desktop client e2e.
  • Tauri cargo check.
  • Linux desktop frozen build.
  • Android arm64 debug build.

Twoman 1.0.0

Choose a tag to compare

@ShahabSL ShahabSL released this 05 May 13:48
363e839

Twoman 1.0.0

Twoman 1.0.0 is the Go dataplane and managed-host Node release.

This release keeps the public host in the path for camouflage, but moves the
high-throughput helper/agent runtime to Go, makes the Node broker advertise the
profile it is actually running, and adds WARP-aware hidden-server routing for
hosts that are only reachable through WireProxy/WARP.

Highlights

  • Added helper-agent/, a Go helper/agent runtime for the local client and
    hidden server dataplane.
  • Made the Linux server deploy path use Go by default:
    scripts/deploy_hidden_server.sh and
    scripts/install_hidden_server_local.sh build and install
    twoman-helper-agent.
  • Made the local client script use Go by default:
    scripts/start_client.sh builds helper-agent and runs it in helper mode.
  • Made Android use the packaged Go helper binary instead of the embedded Python runtime.
  • Made desktop helper sidecars use the Go helper runtime:
    desktop_app/scripts/build_sidecars_linux.sh,
    desktop_app/scripts/build_sidecars_windows.bat, and source-mode desktop
    runtime now prefer the Go helper.
  • Added broker-advertised managed-host capabilities in
    host/node_selector/broker.js, including data upload worker counts, upload
    batch sizing, down-lane selection, cipher suites, and max frame size.
  • Added adaptive runtime overrides in the Go transport so helper/agent can
    apply broker-advertised profiles or explicit config overrides.
  • Increased the fast managed-host profile defaults to the measured production
    shape:
    8 data upload workers, 512 KiB data upload batches, 6 ms data flush
    delay, 1 MiB broker bulk batches, and larger Go stream windows/reorder
    buffers.
  • Reduced dataplane overhead by avoiding unnecessary frame/body copies in the
    Go transport and receive path.
  • Added scripts/benchmark_live_ceiling.py to record raw host ingress and
    end-to-end tunnel throughput against a live deployment.
  • Enabled generated camouflage websites by default in host deploy scripts.

Acknowledgements

Thanks to @motixo for the pull requests that moved
Twoman's dataplane direction forward:

  • #2 introduced the AES-256-CTR
    migration work across the broker and edges.
  • #3 introduced the Go
    helper/agent rewrite that became the foundation for the 1.0.0 dataplane.

The final 1.0.0 integration includes additional hardening, deployment, client,
benchmark, documentation, and packaging work on top of those contributions, but
those PRs are the upstream contribution that started the Go release track.

WARP and Outbound Routing

WARP support in this release is specifically for the hidden server side.

  • TWOMAN_UPSTREAM_PROXY_URL routes hidden-server traffic to the public broker
    through a proxy such as local WireProxy/WARP.
  • TWOMAN_OUTBOUND_PROXY_URL routes final hidden-server egress through a
    separate proxy when desired.
  • scripts/deploy_hidden_server.sh and
    scripts/install_hidden_server_local.sh auto-detect local WireProxy on
    127.0.0.1:1280 and use it for broker reachability and outbound egress
    unless overridden.
  • WARP does not remove the public host from the architecture. The visible
    tunnel still traverses the managed host, so camouflage and host limits still
    matter.

Performance

Live benchmark artifact:
output/twoman-live-ceiling-20260505T031503Z.json

Measured on 2026-05-05 against the live /parvaneh managed-host Node path:

  • Raw server-to-host upload probe, 16 concurrent uploads:
    37.34 Mbps aggregate.
  • Go tunnel, 8 workers / 512 KiB batches, 100 MB download:
    46.28 Mbps.
  • Go tunnel, 16 workers / 512 KiB batches, 100 MB download:
    32.45 Mbps.

The release default is 8 data upload workers because it was the fastest
stable tested profile. Higher concurrency is not automatically better on the
managed host; 24 workers timed out during tuning and 16 workers was slower
than 8.

Post-redeploy verification artifact:
output/twoman-live-ceiling-20260505T053527Z.json

  • Raw server-to-host upload probe, 16 concurrent uploads:
    33.01 Mbps aggregate.
  • Go tunnel, 8 workers / 512 KiB batches, 100 MB download:
    25.93 Mbps.

That second sample used the same live stack after the 1.0.0 redeploy. The
lower number is recorded rather than hidden because the public host and remote
origin path vary over time; the release default remains the 8 x 512 KiB
profile because it was still the best tested shape.

Operator Options

New or promoted deploy/runtime controls:

  • TWOMAN_DATA_UP_WORKERS
  • TWOMAN_DATA_UP_MAX_BATCH_BYTES
  • TWOMAN_DATA_UP_FLUSH_DELAY_SECONDS
  • TWOMAN_HELPER_DATA_UP_WORKERS
  • TWOMAN_AGENT_DATA_UP_WORKERS
  • TWOMAN_HELPER_DATA_UPLOAD_MAX_BATCH_BYTES
  • TWOMAN_AGENT_DATA_UPLOAD_MAX_BATCH_BYTES
  • TWOMAN_HELPER_DATA_UPLOAD_FLUSH_DELAY_SECONDS
  • TWOMAN_AGENT_DATA_UPLOAD_FLUSH_DELAY_SECONDS
  • TWOMAN_UPSTREAM_PROXY_URL
  • TWOMAN_OUTBOUND_PROXY_URL

Compatibility Notes

  • Python helper/agent runtime code was removed from the shipped client/server
    path for this release.
  • Android, desktop, local CLI, and hidden-server installs use the Go helper.
  • Desktop Proxy/System proxy modes use the Go helper sidecar after rebuilding
    sidecars. The separate desktop gateway and Windows TUN sidecar remain
    separate components.

Validation

Validated before release handoff:

  • go test ./... in helper-agent/
  • shell syntax checks for deploy/start scripts
  • node --check for host/node_selector/broker.js and bundled app.js
  • focused Python tests
  • tests/run_e2e_go_node_http.sh
  • tests/run_desktop_client_e2e.sh
  • cargo check --manifest-path desktop_app/src-tauri/Cargo.toml
  • Android assembleArm64Debug
  • live host redeploy for /parvaneh
  • live hidden-server Go agent redeploy
  • live 100 MB tunnel benchmark

Rebuild Scope

Rebuild release artifacts that include helper/agent runtime changes:

  • Linux server installer/deploy bundle
  • Linux desktop sidecars
  • Windows desktop sidecars and portable bundle
  • Android APK/AAB because the app now packages the Go helper binary for each
    supported ABI.

Twoman 0.7.0

Choose a tag to compare

@ShahabSL ShahabSL released this 13 Apr 00:25

Twoman 0.7.0

Twoman 0.7.0 is the transport and deployment consolidation release.

This release turns the 0.7 transport refresh into the official shipped
version. The main themes are:

  • backend-aware transport profiles
  • dedicated DNS handling for tunnel mode
  • managed-host Node improvements
  • hidden-side WARP routing for reachability and egress
  • separate hidden-side outbound proxy routing

Highlights

  • Added broker-advertised transport capabilities and profile selection in
    twoman_transport.py:
    • helpers and agents now follow broker-advertised profiles instead of forcing
      one transport shape across every backend
    • shared hosts advertise and default to shared_host_safe
    • Node-capable managed hosts can advertise managed_host_http and
      managed_host_ws
  • Added a dedicated DNS protocol path in twoman_protocol.py,
    local_client/helper.py, and hidden_server/agent.py:
    • VPN DNS is no longer modeled as ordinary short-lived proxy streams
    • tunnel mode now uses FRAME_DNS_QUERY / FRAME_DNS_RESPONSE /
      FRAME_DNS_FAIL
    • Android VPN reliability improves because DNS is now a first-class protocol
      subsystem
  • Added hidden outbound proxy routing in hidden_server/agent.py,
    twoman_proxy.py, twoman_dns.py, and the install/deploy scripts:
    • the hidden server can use one proxy for server -> public host
    • and a separate proxy for final server -> internet egress
    • final outbound egress can now be pushed through local WireProxy/WARP when
      needed
  • Added managed-host Node broker improvements in host/node_selector/broker.js:
    • local Node HTTP and WebSocket end-to-end coverage now ship in-tree
    • the managed-host transport benchmark harness now ships in
      tests/benchmark_transport_profiles.sh
  • Added Android profile import improvements in MainActivity.kt and
    AndroidManifest.xml:
    • the app now accepts twoman://profile?data=... import links directly

New Operator Options

The 0.7.0 diff adds explicit hidden-side proxy controls instead of relying on
ad hoc config edits.

  • CLI installer options in twoman_control/cli.py:
    • --hidden-upstream-proxy-url
    • --hidden-upstream-proxy-label
    • --hidden-outbound-proxy-url
    • --hidden-outbound-proxy-label
  • Deploy/install environment variables in twoman_control/installer.py and the
    shell scripts:
    • TWOMAN_UPSTREAM_PROXY_URL
    • TWOMAN_UPSTREAM_PROXY_LABEL
    • TWOMAN_OUTBOUND_PROXY_URL
    • TWOMAN_OUTBOUND_PROXY_LABEL

WARP Notes

WARP is the important operational path in 0.7.0.

  • Hidden-side WARP can be used for host reachability when the Linux server
    cannot reach the public host directly.
  • Hidden-side WARP can also be used for final outbound egress so the visible
    public IP becomes the WARP exit instead of the hidden server IP.
  • WARP is a hidden-server routing tool in this release. Desktop and Android
    clients do not need WARP for normal Twoman use.
  • WARP does not bypass the public host, remove camouflage, or change the
    public-host role in the architecture.

Production Notes

  • The current audited shared host still recommends shared_host_safe.
  • The current managed Node path has the highest ceiling, but only when the host
    actually exposes a stable Node-capable runtime and the broker advertises that
    capability.
  • Hidden-side WARP remains a reachability and egress tool, not a desktop or
    Android client requirement.
  • Camouflage behavior remains in place. This release improves transport and
    deploy behavior without removing the public camouflage model.

Documentation

  • README.md now documents:
    • fast install
    • optional hidden outbound proxy routing
    • WARP-backed hidden reachability and egress guidance
  • docs/EASY_DEPLOY.md now documents:
    • hidden host-route proxying
    • hidden outbound proxying
    • optional WARP-backed hidden deployment routing
  • docs/BACKENDS.md now documents:
    • backend-family behavior under the 0.7 transport model
    • managed-host Node guidance with WARP and public-host route notes
  • docs/RELEASE_CHECKLIST.md now matches the 0.7 validation set

Release Scope

Artifacts should be rebuilt for this release because the shared runtime changed:

  • Android APK and AAB
  • Linux desktop bundles
  • Windows desktop bundles

Twoman 0.6.7

Choose a tag to compare

@ShahabSL ShahabSL released this 11 Apr 02:29

Twoman 0.6.7

Twoman 0.6.7 is the installer and operations release.

The main result is that a Linux machine can now become the hidden Twoman
server with one command while deploying the public host broker from the same
flow. This release also formalizes optional hidden-side WARP routing for the
setups where the hidden server cannot reach the public host directly.

Highlights

  • Added a one-command Linux installer:
    • deploys the selected public-host backend
    • installs the hidden agent locally with systemd and a watchdog
    • validates broker reachability from the real hidden-server path
    • prints the final Twoman import text for Android and desktop clients
    • installs the twoman management command
  • Added twoman_control/:
    • guided interactive install flow
    • saved install state for reconfigure and redeploy
    • non-interactive management commands
    • Textual TUI for verify, logs, restart, redeploy, and config review
  • Added optional hidden-server upstream proxy support in the shared transport:
    • designed for WireProxy / WARP or any other local SOCKS or HTTP upstream
    • keeps the upstream-routing decision on the hidden side only
  • Added hidden-server local install support and proxy-aware deploy scripts.
  • Fixed the intermittent legacy desktop TUI teardown race that was breaking the
    GitHub CI desktop test during shutdown.
  • Expanded CI coverage for the installer, transport proxy path, and deploy
    shell scripts.

Production Notes

  • Production darvazeh keeps the same public path while allowing the hidden
    side to route through local WireProxy when direct hidden-to-host reachability
    is bad.
  • The live camouflage site naming was corrected so the public site no longer
    shows temporary E2E naming.
  • This release does not change the core product constraint: the public host
    remains in the live path.
  • WARP support is optional and server-side only for this mode. Desktop and
    Android clients do not require WARP.

Documentation

  • README.md now leads with the fast installer instead of manual deployment.
  • docs/EASY_DEPLOY.md covers the interactive flow, the optional WARP route,
    and a non-interactive install example.
  • docs/MANUAL_DEPLOY.md, docs/BACKENDS.md, and docs/RELEASE_CHECKLIST.md
    now match the current runtime and release flow.
  • CONTRIBUTING.md and SECURITY.md were added to make the public repository
    easier to work with as an open-source project.