31 min read

Expose a Self-Hosted AI Avatar Without Port Forwarding

Publish a local AI avatar interface or API with Localtonet while keeping GPU workers private and securing uploads, jobs, previews, and downloads.

A remote browser reaches a local AI avatar gateway through an outbound HTTP tunnel while GPU workers remain private.
The public tunnel terminates at a local gateway rather than exposing GPU workers directly.
AI & Machine Learning ยท Self-Hosted AI Avatars ยท Localtonet ยท 2026

Publish the avatar interface, not the private GPU stack

A self-hosted AI avatar service often combines a browser interface, media-upload API, job queue, model runtime, GPU worker, temporary storage, and result-delivery path. Exposing that entire stack directly creates unnecessary risk. In this guide, we show how to place a narrowly scoped local gateway in front of the application and expose only that gateway with a Localtonet HTTP tunnel, without inbound router port forwarding, firewall changes, VPN setup, or a public IP address. We also cover uploads, asynchronous jobs, progress reporting, previews, downloads, security controls, operations, troubleshooting, and protocol planning for real-time avatar workloads.

๐Ÿ”’ Keep model workers and internal services private ๐ŸŒ Publish a local web interface or HTTP API โšก Support uploads, jobs, previews, and downloads

Design a safe public architecture for an AI avatar service

Topology showing remote clients reaching a local gateway through Localtonet while GPU workers and files stay private.
A single local gateway mediates public requests and isolates processing workers and files.

The safest exposure boundary is usually not the avatar model process itself. It is a small web application or API gateway that accepts a limited set of requests, validates them, submits work to private components, and returns controlled responses. The GPU worker, queue, model server, database, object store, and administrative tools should remain inaccessible from the public tunnel unless there is a specific and reviewed reason to publish them.

This separation matters because media-generation stacks often grow organically. A development deployment might include a web interface that calls a model server directly, a queue dashboard with no authentication, a temporary-output directory served by a basic development server, and an unrestricted API that accepts local file paths. That can work on a trusted workstation, but it is not an appropriate public boundary.

A better design treats the public avatar application as an orchestrator. The browser or API client communicates with one local HTTP gateway. That gateway performs authentication and authorization, checks uploaded media, creates jobs, exposes narrowly scoped status endpoints, and authorizes result downloads. Internal calls from the gateway to the model runtime remain on the machine or private LAN.

๐ŸŒ Public application gateway Expose one HTTP interface containing only the routes required by remote users, such as upload, job creation, status, preview, cancellation, and result download.
๐Ÿง  Private model runtime Keep model-loading endpoints, inference controls, debugging interfaces, and unrestricted generation parameters behind the gateway.
โš™๏ธ Private GPU worker Let the worker consume trusted jobs from an internal queue rather than accepting arbitrary public requests on its own listening port.
๐Ÿ“ฆ Controlled media storage Store uploads and generated assets outside publicly browsable directories, then deliver files through authorized application routes.
๐Ÿ”’ Narrow trust boundary Apply authentication, validation, quotas, request limits, logging, and cleanup rules at the component receiving tunneled traffic.
๐Ÿ”Œ Outbound tunnel connection The Localtonet client establishes an outbound connection to our relay. No inbound router port forwarding or public IP address is required.

With Localtonet, an HTTP tunnel points to a local IP address and port reachable from the device running our client. The tunnel does not need to know how the private inference stack is assembled. It only needs a reachable HTTP target. This makes the local gateway the natural boundary between public traffic and private GPU infrastructure.

A tunnel is connectivity, not application authorization

Publishing an HTTP endpoint makes that endpoint reachable through its assigned public address. The avatar application must still enforce authentication, authorization, request validation, safe file handling, and resource limits. Do not rely on an obscure URL as the only access control.

Map avatar generation to a web-friendly workflow

An asynchronous avatar workflow from validated upload and job creation through GPU processing, preview, and download.
A job-based workflow separates short web requests from longer GPU generation tasks.

AI avatar systems differ in their models and rendering methods, but many remote-facing workflows share the same application pattern. A user uploads one or more inputs, creates a generation job, monitors progress, previews intermediate or final media, and downloads the result. Modeling these actions explicitly produces a safer and more reliable interface than holding one HTTP request open for an entire GPU render.

1. Upload source media

An upload might contain a portrait, source video, audio track, script, reference image, motion signal, or configuration document. The gateway should accept only the input types the selected workflow actually requires. It should reject oversized or malformed requests before they consume significant disk, memory, decoder, or GPU resources.

Store each accepted upload under a server-generated identifier. Do not use an untrusted filename as a storage path, and do not allow a client to choose an arbitrary local destination. Preserve an original filename only as non-authoritative metadata if the interface needs to display it.

2. Create an asynchronous generation job

Avatar rendering can be expensive and unpredictable. Duration depends on input length, output dimensions, frame rate, model state, available GPU memory, queue depth, and the implementation itself. A robust API therefore creates a job and returns an opaque job identifier instead of keeping the upload request open until rendering finishes.

The job record should belong to the authenticated user or access scope that created it. The gateway can then place a trusted internal message on a queue for the private worker. Public clients should not be able to insert unrestricted worker commands, filesystem paths, model paths, shell arguments, or callback destinations.

3. Report state and progress

A simple status endpoint can return states such as queued, running, completed, failed, cancelled, or expired. Exact state names are an application design decision, but they should be documented and stable. If numeric progress is available, make clear whether it represents frames processed, pipeline stages, estimated completion, or another measurement.

Polling is usually the simplest remote-access design because it uses ordinary HTTP requests and recovers naturally from a temporary disconnection. Server-sent events or WebSocket-based updates may provide a more immediate interface, but compatibility must be tested against the exact application behavior and current tunnel configuration. Do not assume that a browser interface is using ordinary short-lived HTTP merely because it loads over HTTP.

4. Serve previews safely

A preview endpoint should return only media associated with a job the requester is allowed to view. Avoid exposing a temporary-output directory through directory listing. If previews are regenerated or replaced, use identifiers that cannot be converted into arbitrary filesystem paths.

Decide whether previews may be cached. Avatar images and videos can contain biometric, personal, confidential, or licensed material. Application responses should use cache behavior appropriate to the sensitivity of the content and the intended clients.

5. Authorize result downloads

Completion should not turn an internal output folder into a public file share. Deliver the result through an authenticated route, a short-lived application-generated download mechanism, or another controlled storage workflow. A valid job identifier alone should not automatically prove that a requester may download its output.

6. Expire and delete artifacts

Uploads, extracted frames, audio intermediates, checkpoints, previews, final videos, logs, and failed-job remnants can consume storage rapidly. Define retention independently for each category. Cleanup should cover successful, failed, cancelled, abandoned, and partially uploaded jobs.

Public operation Recommended application behavior Keep private
Media upload Authenticate, limit size, validate type, generate a storage name, and return an opaque media identifier Host paths, raw temporary directories, and decoder controls
Create job Validate parameters, enforce quotas, create an owned job record, and enqueue trusted work Worker command line, model filesystem paths, and unrestricted pipeline graphs
Read progress Return a limited status document for a job the requester owns or may access Queue administration, worker diagnostics, and other users' jobs
View preview Authorize the request and stream only the expected preview asset Directory listings and predictable temporary filenames
Download result Check ownership or permission and use a controlled response path The complete output directory and unrelated generated files
Cancel job Verify authorization and transition the job through a defined cancellation process General worker termination and process-management interfaces

Prerequisites and decisions to make before exposure

This guide is intentionally implementation-neutral. No specific avatar project, installation command, default port, file path, environment variable, or credential format was supplied. Use the documentation for your selected avatar application to install it and identify its supported HTTP interface. Do not copy a port from an unrelated project or assume that every avatar application exposes an API.

Before configuring Localtonet, confirm all of the following:

  • The avatar service is installed and starts successfully on the host or private network.
  • A browser interface, API gateway, or reverse proxy provides the public-facing HTTP boundary.
  • You know the actual local IP address and port of that boundary.
  • The device running the Localtonet client can reach that IP address and port.
  • The gateway requires authentication before accepting uploads, starting jobs, reading status, or downloading results.
  • Internal model, queue, database, storage, and GPU worker interfaces are not included in the public route set.
  • Upload limits, job concurrency limits, retention rules, and storage capacity have been defined.
  • You have non-sensitive test media and a low-cost test job for end-to-end verification.

Choose where the Localtonet client will run

The simplest arrangement places our client on the same machine as the public application gateway. If the gateway listens only on the loopback interface, a client on that machine may target the appropriate loopback address and application port.

The client may instead run on another device that can reach the gateway over a private network. In that design, the target must listen on an address reachable from that device, and the private network must permit the connection. Do not make an internal service listen on every interface merely as a troubleshooting shortcut. Restrict its private-network reachability to what the design requires.

Confirm the local service before involving a tunnel

Test the gateway from the Localtonet client device. Confirm that the landing page or health endpoint responds, authentication is enforced, a test upload succeeds, a small job can be created, status can be retrieved, and the result can be downloaded. If the local path does not work, creating a public tunnel will not repair the application.

Understand the tunnel lifecycle

Creating a tunnel does not mean it is running. It must be started, and it remains available only while the selected client device is connected and the tunnel is running. Sleep, shutdown, client termination, network loss, or stopping the tunnel can make the public endpoint unavailable.

Separate application installation from remote access

First install, configure, start, and verify the avatar application according to that project's own documentation. Then add Localtonet as the remote-access layer. This separation makes failures easier to diagnose and prevents tunnel configuration from hiding an application problem.

Configure a narrowly scoped local gateway

The gateway is the most important security component in this design. It should expose a deliberately small public contract while translating accepted requests into private operations. It can be built into the avatar application or provided by a separate web service or reverse proxy, but its behavior should be reviewed before public exposure.

Define an explicit route allowlist

List the routes remote users need. A typical design may require a login or token-validation route, upload creation, job creation, job status, preview retrieval, result download, and cancellation. The exact route names depend on the application and should not be invented from this guide.

Deny or omit administrative routes, model-management endpoints, queue dashboards, interactive debuggers, metrics containing sensitive details, unrestricted file browsers, development consoles, and general-purpose proxy behavior. If a bundled interface cannot hide those functions, place a restrictive gateway in front of it rather than publishing the bundled server directly.

Use asynchronous job semantics

Keep the request that creates a job short. Once validation succeeds and the job is durably recorded or queued, return its identifier. The client can retrieve state separately. This avoids coupling a potentially long GPU render to one network connection and gives the application a clear place to implement retries, cancellation, queueing, and failure reporting.

Job creation should be idempotent where accidental retries would otherwise duplicate expensive work. One common design is for the client to submit a unique request identifier within its authorized scope. The server can return the existing job for a repeated request rather than starting another render. The precise mechanism belongs to the application, not to the tunnel.

Control concurrency and cost

An authenticated user can still overload a GPU. Set limits for active uploads, queued jobs, simultaneous renders, output duration, dimensions, frame count, input count, and storage consumption according to the capabilities of the local system. Reject excess work predictably rather than allowing the operating system or GPU runtime to fail under pressure.

Separate admission from execution. The gateway should decide whether a request is allowed before the worker allocates expensive resources. Queue limits should be finite, and clients should receive a clear response when capacity is unavailable.

Design safe failure responses

Public error messages should explain what the user can correct without leaking internal paths, stack traces, environment variables, model locations, dependency versions, worker addresses, or secrets. Store detailed diagnostics in protected local logs and associate them with a request or job identifier that operators can search.

Handle callbacks carefully

If the application supports completion callbacks or webhooks, do not let arbitrary users make the GPU host request any destination without validation. User-controlled callback URLs can create server-side request forgery risk. Restrict destinations, resolve and validate addresses safely, or disable callbacks when polling is sufficient.

Secure uploads, jobs, previews, and downloads

Gateway security controls validate uploads and restrict access to jobs, previews, downloads, workers, and local files.
Validation and authorization at the gateway prevent direct public access to workers and storage.

Public AI media endpoints combine several high-risk characteristics: large request bodies, complex decoders, long-running compute, personally sensitive content, and expensive output generation. Security must cover both unauthorized data access and resource abuse.

Require authentication and object-level authorization

Authentication answers who is making the request. Authorization answers whether that identity may perform the requested action. Apply both to every sensitive operation. A user allowed to create a job should not automatically be allowed to inspect every job on the server.

Use opaque, non-sequential identifiers for jobs and media, but do not treat opacity as authorization. Every status, preview, cancellation, and download request should verify ownership, project membership, role, or another explicit access rule.

Keep credentials out of URLs because URLs can appear in browser history, logs, analytics, and referrer data. Never embed Localtonet device tokens in examples, frontend code, shared screenshots, or public repositories. A Localtonet auth token identifies the client device and must be kept secret.

Validate media beyond the filename

File extensions and client-provided content types are hints, not proof. Apply a supported-format allowlist, inspect the content using a safe method appropriate to the application, reject malformed structures, and process files with maintained libraries. If the pipeline invokes external media tools, pass structured arguments safely rather than constructing shell commands from user input.

Consider limits on compressed and expanded size, dimensions, frame count, duration, channel count, archive contents, and metadata. A small compressed input can expand into a much larger in-memory or on-disk representation.

Prevent path traversal and filename collisions

Generate internal storage names and keep uploads within a dedicated root. Normalize and validate any path before use, and reject attempts to escape the intended directory. Do not let a request overwrite model files, configuration, logs, another user's upload, or an existing result.

Use separate locations or namespaces for incoming uploads, validated inputs, working files, previews, final results, and quarantined failures. This separation makes cleanup and permission enforcement easier.

Set request and time limits

Apply maximum request-body sizes, upload time limits, header limits, and sensible idle timeouts at the gateway. These values must be selected for the expected media workload. A limit appropriate for a portrait-image generator may be unusable for source-video processing, while an unlimited body size creates unnecessary exposure.

Long inference duration should be handled by the job system, not by setting every HTTP timeout to an extreme value. Keep upload, job creation, status, preview, and download operations separate so each can have behavior appropriate to its purpose.

Protect generated and source media

Treat source and generated assets as private unless the service is intentionally public. Use least-privilege filesystem permissions. Avoid writing sensitive media into a directory served without authorization. Define retention periods and expose deletion controls when appropriate.

Logs should record enough information to investigate failures and abuse without copying credentials, full request bodies, personal scripts, or sensitive media into general-purpose log streams. Review what the web framework, reverse proxy, and application log by default.

Control cross-origin browser access

If a browser frontend and API use different origins, configure cross-origin access narrowly. Do not permit every origin with credentials merely to make development easier. Allow only the expected frontend origins, methods, and headers. If the frontend and API share one public origin, the architecture may be simpler, but application authentication and request-forgery protections are still required.

Do not expose development mode

Development servers and debug interfaces may reveal stack traces, source code, environment details, or interactive execution features. Use the avatar project's documented production configuration and place a controlled gateway in front of internal components. Because no specific project was supplied, this guide cannot safely prescribe a production command or assume a default server.

Risk Gateway control Operational control
Unauthorized generation Authentication, authorization, and scoped API access Review access and revoke credentials when no longer needed
GPU exhaustion Finite queues, concurrency limits, quotas, and input constraints Monitor queue depth, render duration, memory, and failures
Storage exhaustion Upload limits and per-user or per-project quotas Retention policies and cleanup for every terminal job state
Malicious media Format allowlists, structural validation, and safe decoder use Patch media libraries and isolate processing where practical
Cross-user data access Object-level checks on jobs, previews, and downloads Audit authorization failures without logging sensitive content
Information leakage Sanitized errors and protected administrative routes Restrict logs, backups, temporary files, and diagnostics

Expose the gateway with a Localtonet HTTP tunnel

Once the local gateway works and the security boundary is ready, add remote access. Our client establishes an outbound connection to a Localtonet relay server. The resulting HTTP tunnel provides a public address for the selected local IP address and port without requiring inbound router port forwarding, firewall changes, VPN setup, or a public IP address.

HTTP tunnels support the Process Type choices Random Sub Domain, Custom Sub Domain, and Custom Domain. These choices serve the same content at a public HTTPS address. Availability can vary, and custom-domain DNS requirements must be checked against current documentation before making DNS changes. Do not assume that every option is included in every plan.

1

Install and run the Localtonet client

Install our client for the operating system on a device that can reach the avatar gateway. Run it using the current installation and authentication workflow shown by Localtonet. This article does not invent a client command because installation details can vary by operating system and client version.

2

Authenticate and select the client device

Use the device-specific auth token associated with the client that will run the tunnel. Keep the token private. Never paste it into frontend code, logs, public issue reports, screenshots, or a shared article.

3

Select an available relay server

Choose a server or region from the current Localtonet dashboard. Available server codes and regions can change and may vary by plan, so obtain the value from the product rather than copying a hardcoded example.

4

Create the HTTP tunnel configuration

Select the required Process Type and point the tunnel to the actual local IP address and port of the protected avatar gateway. Do not target the GPU worker, queue dashboard, database, unrestricted model API, or temporary-file server. Confirm any custom-domain DNS requirements against the current documentation before using that option.

5

Start the tunnel

Use the Start button after reviewing the target. Creating the configuration alone does not make the tunnel active. The selected client must remain connected and the tunnel must remain running.

6

Use and verify the assigned public address

Open the assigned public URL from an external connection and complete the verification plan below. When access is no longer required, stop the tunnel. Delete obsolete tunnel configurations when they should not be reused.

For the current product workflow, consult the Localtonet HTTP tunnel documentation while configuring the tunnel. Exact dashboard availability, relay choices, domain behavior, and plan-specific options should always be confirmed in the current product.

The Localtonet client determines target reachability

A target that works from your laptop may still be unreachable from the device running our client. Test the avatar gateway from the client device itself. If the client and gateway are on different machines, verify the private address, listening interface, local firewall policy, and network route.

Verify the complete remote workflow

A successful landing page proves only that one route can respond. Avatar services need an end-to-end test that exercises authentication, upload handling, asynchronous generation, progress, preview delivery, downloads, cleanup, and failure behavior.

Run a local baseline first

Before testing the public URL, perform the same workflow against the local gateway from the Localtonet client device. Record what success looks like, including expected response states and approximate resource behavior. Use non-sensitive test media and a small job that does not consume unnecessary GPU time.

Test from outside the local network

Use a device or network that is not relying on the same local route. Open the assigned public address and confirm that unauthenticated access is rejected where expected. Then authenticate using a test account with the minimum required permissions.

Exercise each workflow stage

  • Upload one valid test asset and confirm that it receives an opaque identifier.
  • Attempt a disallowed type and confirm that validation rejects it safely.
  • Attempt an oversized request and confirm that the gateway returns a controlled response.
  • Create one inexpensive job and verify that duplicate submission behavior is understood.
  • Read job status until the job reaches a terminal state.
  • Open a preview and confirm that another unauthorized account cannot retrieve it.
  • Download the result and check its content and media type.
  • Test cancellation if the application supports it.
  • Confirm that expired or deleted assets are no longer retrievable.

Test negative authorization cases

Create jobs under two separate test identities if the application supports multiple users. Verify that changing a job or media identifier does not expose another user's status, preview, result, or cancellation action. Test both predictable mistakes and deliberately altered identifiers.

Test interruption and recovery

Stop the tunnel while a private worker is processing a job. The public client should lose access, but the result inside the private system depends on the application's job semantics. Restarting the tunnel does not automatically guarantee that an interrupted browser request will resume. The client should query the job again after connectivity returns.

Also test a Localtonet client restart, a gateway restart, a failed render, a full queue, insufficient storage, and invalid input. The application should return controlled states rather than leaving jobs permanently marked as running.

Observe resource behavior

During testing, inspect CPU, GPU memory, system memory, disk usage, temporary storage, queue depth, and generation duration. Verify that one user cannot create an unbounded number of jobs or simultaneous uploads. Confirm that cleanup occurs after success, failure, cancellation, and expiration.

Use consented, non-sensitive test material

Avatar inputs and results may contain personal likenesses, voices, or confidential content. Use media you are authorized to process and share. Technical access controls do not replace consent, licensing, disclosure, or other obligations applicable to the deployment.

Operate and troubleshoot the service

Remote access is reliable only when the application, gateway, worker, storage, Localtonet client, and tunnel lifecycle are operated as one system. Monitoring should distinguish a public connectivity failure from a local gateway failure or an inference failure.

Monitor separate health layers

A useful health model has at least four layers:

  • Public reachability: Can an authorized external test reach the assigned public address?
  • Gateway health: Can the Localtonet client device reach the local IP address and port?
  • Dependency health: Can the gateway reach its private queue, storage, database, and worker?
  • Inference health: Can a controlled test job complete without exhausting resources?

Keep health responses minimal. A public health route should not reveal internal hostnames, model paths, GPU details, dependency versions, queue contents, or environment configuration.

The public address does not respond

Confirm that the selected Localtonet client is connected and that the tunnel is running. Remember that creating the tunnel is not the same as starting it. Check whether the host is sleeping, shut down, disconnected, or running the client under a user session that has ended.

Next, test the local gateway from the client device. If that fails, confirm the target IP address, target port, listening interface, process state, and private-network route. A connection-refused error generally points to no service listening at the chosen destination, while a timeout can indicate routing, firewall, or an unresponsive process. Interpret exact errors in the context of the operating system and application.

The interface loads, but jobs fail

If basic HTTP routes work, the tunnel has reached the gateway. Investigate the private application path: request validation, queue insertion, worker availability, model loading, GPU memory, input decoding, storage permissions, and output creation. Do not solve an internal worker problem by exposing the worker publicly.

Uploads fail or stop partway through

Compare the attempted file with application-level body-size, duration, and format limits. Check available temporary storage and gateway logs. If a reverse proxy or framework sits in front of the application, it may have its own request limit or timeout. Change limits deliberately and keep a finite ceiling rather than disabling every protection.

Generation completes, but download fails

Verify that the job record points to the expected result and that the gateway process has permission to read it. Confirm that authorization succeeds for the correct user, the file still exists, cleanup did not run too early, and the response does not expose an invalid internal path. Test the same download locally before blaming the public tunnel.

Progress updates do not appear

Determine how the application transports updates. Polling, server-sent events, WebSockets, and custom media transports have different connection behavior. If polling works but a persistent update channel does not, review the application's protocol and connection requirements. Current Localtonet compatibility for the exact mechanism should be verified rather than assumed.

Requests are duplicated after a retry

Network interruptions can cause clients to retry without knowing whether the original job was accepted. Use application-level idempotency or a safe lookup mechanism for expensive job-creation requests. The tunnel forwards traffic, but it does not define duplicate-submission semantics for the avatar application.

Storage usage keeps increasing

Inspect abandoned uploads, failed decoder output, extracted frames, cancelled jobs, preview caches, completed results, and logs. A cleanup process that handles only successful jobs is incomplete. Use explicit retention states and verify cleanup with automated tests.

Symptom First check Likely layer
Public URL unavailable Client connection and tunnel running state Localtonet lifecycle or host connectivity
Public and local target both fail Gateway process, IP address, port, and listener Local application or private network
Login works, generation fails Queue, worker, model, GPU, and storage logs Private inference stack
Small uploads work, large uploads fail Request limits, timeouts, disk capacity, and format checks Gateway or application configuration
Other users can read a job Object-level authorization on every job route Application security
Jobs duplicate after reconnect Job-creation idempotency and client retry behavior Application protocol

Plan separately for real-time and interactive avatars

Batch avatar generation maps naturally to HTTP: upload media, create a job, poll status, and download a result. A real-time avatar may have a different media path involving persistent sessions, bidirectional control, continuous audio, continuous video, or application-specific raw TCP or UDP traffic.

Do not choose a tunnel based only on the fact that the control page opens in a browser. Inspect the protocol used for the actual media path. Developer tools, application documentation, server configuration, and packet-level observation in an authorized environment can help identify whether the system uses ordinary HTTP requests, a persistent browser protocol, raw TCP, UDP, or a combination.

Workload component Possible network pattern Planning guidance
Upload and job creation Ordinary HTTP requests Use an HTTP gateway and enforce authentication, validation, and limits
Status polling Repeated short HTTP requests Keep responses small and apply sensible polling intervals
Persistent progress channel Long-lived HTTP-derived connection Test the exact application behavior and current tunnel compatibility
Result delivery HTTP media download Authorize every object and define caching and retention behavior
Interactive media stream Application-specific TCP, UDP, or multiple flows Document every required flow before selecting tunnel types
Private worker control Internal HTTP, TCP, queue, or process interface Keep private and reach it only through the gateway or trusted internal network

Localtonet supports HTTP/s, TCP, UDP, TLS, and combined UDP/TCP tunnel families. This does not mean that every real-time avatar system will work by opening each observed port. Interactive protocols may negotiate addresses dynamically, require multiple related flows, depend on browser behavior, or include their own authentication assumptions.

Start with an inventory: protocol, direction, local address, local port, session lifetime, authentication method, and whether the flow contains public user data or private control traffic. Expose only the minimum public flows. Keep administrative and worker-control paths private even if they use the same protocol family as public media.

Do not guess the media protocol

An HTTP tunnel is appropriate for a verified HTTP interface. If the avatar's live audio or video path uses raw TCP, UDP, combined transport, or another specialized protocol, plan that path separately and confirm current Localtonet options in the dashboard and documentation. Do not expose additional ports speculatively.

Frequently asked questions

Can I expose a self-hosted AI avatar service without router port forwarding?

Yes. The Localtonet client establishes an outbound connection to our relay server, and an HTTP tunnel can provide a public address for a local avatar gateway. This does not require inbound router port forwarding, firewall changes, VPN setup, or a public IP address. The client must remain connected and the tunnel must be running.

Should I point the tunnel directly at the model server or GPU worker?

Usually no. Point the tunnel at a narrowly scoped application gateway that authenticates users, validates uploads, enforces quotas, creates jobs, and authorizes previews and downloads. Keep unrestricted model controls, worker interfaces, queues, databases, storage services, and debugging tools private.

Does creating a Localtonet tunnel start it automatically?

No. Creating a tunnel configuration does not mean it is running. Start it with the Start button. The selected device must be connected, and the tunnel remains available only while the client is connected and the tunnel is running.

Does an HTTP tunnel authenticate users of my avatar API?

The tunnel provides connectivity to the configured target. Your gateway must enforce application authentication and authorization. Protect upload, job, status, preview, cancellation, and download operations, and verify object-level access on every request.

How should long-running avatar generation requests work?

Prefer an asynchronous workflow. Validate the request, create and enqueue a job, return an opaque identifier, and let the client query status separately. This avoids holding one request open for the entire render and gives the application clearer retry, cancellation, queue, and failure semantics.

Can Localtonet expose an avatar service running on another machine?

The HTTP target may be on or reachable from the device running our client. If it is on another private machine, the client device must be able to reach the selected IP address and port. Configure private listening addresses, routes, and firewall rules according to least privilege.

Which port should I use for my self-hosted avatar application?

Use the port configured by your actual gateway or avatar project. There is no universal AI avatar port, and none can be safely inferred here. Verify the application's configuration and test that exact address from the Localtonet client device before creating the tunnel.

Is an HTTP tunnel enough for a real-time talking avatar?

It depends on the application's actual media path. Uploads, job creation, polling, and downloads commonly fit HTTP. Interactive audio or video may use persistent browser connections, raw TCP, UDP, combined flows, or another protocol. Inspect and document the implementation, then choose the minimum suitable tunnel type and test it end to end.

What happens to a running generation job if the tunnel stops?

Public access stops when the tunnel or selected client is no longer running. Whether an already queued or running generation continues is determined by the local avatar application's job system. A robust client should reconnect later and query the job state instead of assuming that the original request remains active.

Can I use a custom domain for the avatar interface?

HTTP tunnels have Random Sub Domain, Custom Sub Domain, and Custom Domain Process Types. Availability may vary, and exact custom-domain DNS requirements must be checked against current Localtonet documentation and the dashboard before configuration. Do not copy unverified DNS values from another deployment.

Publish your protected avatar gateway with Localtonet

Verify the avatar workflow locally, keep the model runtime and GPU worker private, then create an HTTP tunnel to the narrowly scoped gateway. Start with test media, minimum privileges, finite resource limits, and a clear shutdown and retention plan.

Get Started Free โ†’

Localtonet is a secure multi-protocol tunneling and proxy platform designed to expose localhost, devices, private services, and AI agents to the public internet supporting HTTP/HTTPS tunnels, TCP/UDP forwarding, mobile proxy infrastructure, file server publishing, latency-optimized game connectivity, and developer-ready AI agent endpoint exposure from a single unified control plane.

support