1. 01Authenticate the caller
  2. 02Apply access and limits
  3. 03Run bounded inference
  4. 04Record and recover
Workflow sketch. Implementation choices and evaluation boundaries are explained below.

Separate inference from the team interface

A model listening on a local port is an experiment, not a complete team service. Add a small application boundary that authenticates callers, checks authorisation, limits input, and controls the model request. Keep administrative access separate.

For the initial deployment, place the application behind the organisation’s existing authenticated network or access gateway. Keep the inference endpoint on loopback or an isolated private network. Do not publish the raw model endpoint as a public API.

Make the request contract narrow

Expose a task-specific operation, such as summarising an approved note or answering a procedure question. Validate the caller, input size, allowed model, output limit, and timeout in application code. Avoid allowing ordinary callers to select arbitrary filesystem paths, tools, or model repositories.

authenticated user
  → task API with permissions and limits
  → bounded queue
  → private inference endpoint
  → output validation and review

If the task uses documents, enforce source permissions during retrieval. A single shared model service does not imply that every user can access every document. Keep cache keys scoped to the relevant permissions and source revisions.

Set capacity limits deliberately

Begin with one active inference request and a short queue. Measure typical and worst-case latency before raising concurrency. Context cache and batching can change memory consumption. A service that accepts more work than it can complete creates an operational backlog.

Return a visible busy or unavailable response when the queue limit is reached. Apply a bounded timeout and cancellation path. Keep jobs idempotent so a client retry does not trigger duplicate downstream work.

Log enough to operate the service

Record request ID, task type, model revision, prompt version, start/end time, outcome, and resource measurements where available. Avoid logging full business documents by default. Define retention and who can read diagnostic records.

Monitor accepted-task rate, invalid responses, timeouts, queue depth, memory pressure, and human corrections. A healthy HTTP endpoint is not sufficient evidence that the business workflow is succeeding.

Update one component at a time

Treat a model update as a software release. Run the held-out task set, compare results, and retain the previous configuration. Test restart, missing model files, disk pressure, and upstream-system failure. A useful runbook states who investigates each condition and how to restore service.

Use the workstation’s supported service-management approach and document startup after reboot. Keep model downloads outside routine website CI. The website can describe the service; it should not host inference or contain credentials for it.

Decide when to change the architecture

A shared workstation can be practical for a bounded workload, but it has a hardware and maintenance owner. If demand grows, compare a dedicated host, a hosted API, and more specialised serving runtimes using the same quality and accepted-task criteria.

On NVIDIA systems, advanced runtimes have their own operating-system, driver, and GPU requirements. Do not assume a Windows workstation or an Apple runtime has feature parity with a Linux CUDA deployment. Add complexity only when a measured bottleneck justifies it.

Handover checklist

  • Name the service and business-workflow owners.
  • Verify identity, document permissions, and task limits.
  • Exercise overload, timeout, restart, and rollback.
  • Record model and runtime versions and licence notices.
  • Keep manual handling available when the service is unavailable.

References

Put the process first

How would this fit your operation?

Tell us how the work gets done today and what a useful improvement would look like.

Discuss a workflow ↗