Calling Agents from External Applications (Scala)
SkillAI & modelsLets your app call Golem agents over HTTP using a generated Scala client SDK.
Use Calling Agents from External Applications (Scala) in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add Calling Agents from External Applications (Scala) and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the Calling Agents from External Applications (Scala) skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; Ahel provides instructions and does not run this skill.
No other account needed.
Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
About this skill
Calling Golem agents from external applications when the agent is written in Scala. Use when the user wants to invoke Scala agents from outside the Golem platform.
What this skill tells your AI
The instructions your AI receives, as published by golemcloud/golem in golem-skills/skills/scala/golem-call-from-external-scala/SKILL.md and read by Ahel’s review.
Generate a Scala Bridge SDK
Golem can generate typed Scala bridge SDKs for calling agents from external JVM applications. The bridge target language is independent of the agent's source language: a Scala bridge can call agents written in Rust, TypeScript, Scala, or MoonBit.
Configure bridge generation in golem.yaml:
bridge:
scala:
external:
agents: "*"
outputDir: ./scala-bridge # Optional custom output directory
Then let golem build produce the bridge as part of the normal build:
golem build --yes
Without outputDir, the bridge is generated under golem-temp/bridge-sdk/scala/. Re-running golem build after agent changes keeps the generated client in sync automatically.
Avoid invoking golem generate-bridge manually — it exists as a low-level escape hatch, but the manifest-driven flow above is the supported way to keep bridges configured, reproducible, and up to date.
The generated output is a self-contained sbt project per agent type (e.g., counter-agent-client/). For an agent type named CounterAgent, the client package is golem.bridge.client.counter_agent and the generated client object is CounterAgentClient.
Setup
Use the generated sbt project as a dependency from your external Scala application, or add your application entry point inside the generated project while prototyping.
// build.sbt
scalaVersion := "3.8.2"
name := "external-client"
lazy val bridge = RootProject(file("../scala-bridge/counter-agent-client"))
lazy val root = (project in file("."))
.dependsOn(bridge)
Example
import golem.bridge.client.counter_agent.CounterAgentClient
import golem.bridge.runtime.GolemServer
import scala.concurrent.Await
import scala.concurrent.duration._
@main def main(): Unit =
CounterAgentClient.configure(GolemServer.Local, "my-app", "local")
val timeout = 30.seconds
val counter = Await.result(CounterAgentClient.get("my-counter"), timeout)
val result = Await.result(counter.increment(), timeout)
println(result)
Building and Running
sbt run
Authentication
- Local server: Use
GolemServer.Local. - Golem Cloud: Use
GolemServer.Cloud(token)with your API token. - Custom deployment: Use
GolemServer.Custom(url, token).
Agent Constructors and Methods
Generated Scala bridge clients follow the same conventions as agent-to-agent RPC:
Client.get(...)attaches to an existing agent instance.Client.getPhantom(...)attaches to an existing phantom instance.Client.newPhantom(...)creates a new phantom instance.- Methods returning a result are exposed as
Future[T]. - Fire-and-forget and scheduled methods return
Future[Unit].
Generate Scala Internal Clients for Component-to-Component Calls
When one Golem component needs to call another agent or tool from Scala code, generate an internal Scala client instead of an external REST bridge:
bridge:
scala:
internal:
agents:
- CounterAgent
tools:
- echo
outputDir: ./bridge-sdk/scala/internal # Optional custom output directory
The internal mode generates client code that is linked into a Golem component. It does not generate a standalone JVM REST client, and it does not generate a component by itself.
Re-running golem build generates one Scala.js sbt project per selected internal dependency:
- agent clients use
<agent-name>-guest-client/, for examplecounter-agent-guest-client/; - tool clients use
<tool-name>-tool-guest-client/, for exampleecho-tool-guest-client/.
With no custom outputDir, generated internal clients are written under golem-temp/bridge-sdk/scala/internal/. With outputDir, they are written directly under that directory.
Each generated internal client project is a Scala.js library. Its build.sbt enables ScalaJSPlugin, sets ModuleKind.ESModule, and depends on the Scala SDK artifacts:
libraryDependencies ++= Seq(
"cloud.golem" %%% "golem-scala-core" % "<golem-scala-version>",
"cloud.golem" %%% "golem-scala-model" % "<golem-scala-version>"
)
Add the generated project as a dependency of the Scala component that performs the call, then import the generated client package from that component. Do not add agent_guest.wasm or extra linker settings to the generated internal client project; those belong to the consuming Scala component build/injection flow, while the client project itself is just a Scala.js library.
Internal clients use SDK-side types such as golem.schema.SchemaValue and golem.Datetime. Do not mix them with the external REST bridge runtime types under golem.bridge.runtime, which have a separate wire model.
Using a Generated TypeScript or Rust Bridge
You can also generate a TypeScript or Rust bridge SDK for agents written in Scala. The bridge target language is independent of the agent's source language:
bridge:
ts:
external:
agents: "*"
rust:
external:
agents: "*"
Then use the generated TypeScript or Rust client from your external application. See the golem-call-from-external-ts or golem-call-from-external-rust skills (available in TypeScript and Rust project templates) for details.
Signals
- GitHub stars
- 2k
- Forks
- 210
- Last commit
- Oct 2026
Advanced
- Item type
- skill
- Key
golem-call-from-external-scala- Source
- github.com/golemcloud/golem
More in AI & models
Skill · anthropics
More in AI & modelstriage
Skill · mattpocock
More in AI & modelswayfinder
Skill · mattpocock
More in AI & modelsalgorithmic-art
Skill · anthropics
More in AI & modelscode-review-and-quality
Skill · addyosmani
More in AI & modelsmarketing-psychology
Skill · coreyhaines31
More in AI & models