diff --git a/packages/flutter_tools/lib/src/fuchsia/amber_ctl.dart b/packages/flutter_tools/lib/src/fuchsia/amber_ctl.dart
index 8389eb7..8418366 100644
--- a/packages/flutter_tools/lib/src/fuchsia/amber_ctl.dart
+++ b/packages/flutter_tools/lib/src/fuchsia/amber_ctl.dart
@@ -27,6 +27,12 @@
 //         -x: do not disable other active sources (if the provided source is
 //             enabled)
 //
+//     add_repo_cfg  - add a repository config to the set of known repositories,
+//                     using a source config
+//         -n: name of the update source (optional, with URL)
+//         -f: file path or url to a source config file
+//         -h: SHA256 hash of source config file (optional, with URL)
+//
 //     rm_src        - remove a source, if it exists
 //         -n: name of the update source
 //
@@ -73,4 +79,31 @@
         await device.shell('amber_ctl get_up -n $packageName');
     return result.exitCode == 0;
   }
+
+  /// Converts the amber source config created when [server] was set up to a
+  /// pkg_resolver repo config, and teaches the pkg_resolver instance running
+  /// on [device] about the [FuchsiaPackageServer].
+  Future<bool> addRepoCfg(FuchsiaDevice device, FuchsiaPackageServer server) async {
+    final String configUrl = '${server.url}/config.json';
+    final RunResult result =
+        await device.shell('amber_ctl add_repo_cfg -n ${server.name} -f $configUrl');
+    return result.exitCode == 0;
+  }
+
+  /// Instructs the pkg_resolver instance running on [device] to prefetch the
+  /// package [packageName].
+  Future<bool> pkgCtlResolve(FuchsiaDevice device, FuchsiaPackageServer server,
+                             String packageName) async {
+    final String packageUrl = 'fuchsia-pkg://${server.name}/$packageName';
+    final RunResult result = await device.shell('pkgctl resolve $packageUrl');
+    return result.exitCode == 0;
+  }
+
+  /// Instructs the pkg_resolver instance running on [device] to forget about
+  /// the Fuchsia package server that it was accessing via [serverUrl].
+  Future<bool> pkgCtlRepoRemove(FuchsiaDevice device, FuchsiaPackageServer server) async {
+    final String repoUrl = 'fuchsia-pkg://${server.name}';
+    final RunResult result = await device.shell('pkgctl repo remove --repo-url $repoUrl');
+    return result.exitCode == 0;
+  }
 }
diff --git a/packages/flutter_tools/lib/src/fuchsia/fuchsia_device.dart b/packages/flutter_tools/lib/src/fuchsia/fuchsia_device.dart
index 2cb003e..df1840e 100644
--- a/packages/flutter_tools/lib/src/fuchsia/fuchsia_device.dart
+++ b/packages/flutter_tools/lib/src/fuchsia/fuchsia_device.dart
@@ -265,7 +265,9 @@
       }
 
       // Start up a package server.
-      fuchsiaPackageServer = FuchsiaPackageServer(packageRepo.path, host, port);
+      const String packageServerName = 'flutter_tool';
+      fuchsiaPackageServer = FuchsiaPackageServer(
+          packageRepo.path, packageServerName, host, port);
       if (!await fuchsiaPackageServer.start()) {
         printError('Failed to start the Fuchsia package server');
         return LaunchResult.failed();
@@ -277,16 +279,17 @@
         return LaunchResult.failed();
       }
 
-      // Teach amber about the package server.
-      if (!await fuchsiaDeviceTools.amberCtl.addSrc(this, fuchsiaPackageServer)) {
+      // Teach the package controller about the package server.
+      if (!await fuchsiaDeviceTools.amberCtl.addRepoCfg(this, fuchsiaPackageServer)) {
         printError('Failed to teach amber about the package server');
         return LaunchResult.failed();
       }
       serverRegistered = true;
 
-      // Tell amber to prefetch the app.
-      if (!await fuchsiaDeviceTools.amberCtl.getUp(this, appName)) {
-        printError('Failed to get amber to prefetch the package');
+      // Tell the package controller to prefetch the app.
+      if (!await fuchsiaDeviceTools.amberCtl.pkgCtlResolve(
+          this, fuchsiaPackageServer, appName)) {
+        printError('Failed to get pkgctl to prefetch the package');
         return LaunchResult.failed();
       }
 
@@ -298,15 +301,16 @@
 
       // Instruct tiles_ctl to start the app.
       final String fuchsiaUrl =
-          'fuchsia-pkg://fuchsia.com/$appName#meta/$appName.cmx';
+          'fuchsia-pkg://$packageServerName/$appName#meta/$appName.cmx';
       if (!await fuchsiaDeviceTools.tilesCtl.add(this, fuchsiaUrl, <String>[])) {
         printError('Failed to add the app to tiles');
         return LaunchResult.failed();
       }
     } finally {
-      // Try to un-teach amber about the package server if needed.
+      // Try to un-teach the package controller about the package server if
+      // needed.
       if (serverRegistered) {
-        await fuchsiaDeviceTools.amberCtl.rmSrc(this, fuchsiaPackageServer);
+        await fuchsiaDeviceTools.amberCtl.pkgCtlRepoRemove(this, fuchsiaPackageServer);
       }
       // Shutdown the package server and delete the package repo;
       fuchsiaPackageServer?.stop();
diff --git a/packages/flutter_tools/lib/src/fuchsia/fuchsia_pm.dart b/packages/flutter_tools/lib/src/fuchsia/fuchsia_pm.dart
index ab38a62..55907ff 100644
--- a/packages/flutter_tools/lib/src/fuchsia/fuchsia_pm.dart
+++ b/packages/flutter_tools/lib/src/fuchsia/fuchsia_pm.dart
@@ -166,6 +166,7 @@
 /// Example usage:
 /// var server = FuchsiaPackageServer(
 ///     '/path/to/repo',
+///     'server_name',
 ///     await FuchsiaDevFinder.resolve(deviceName),
 ///     await freshPort());
 /// try {
@@ -176,7 +177,7 @@
 ///   server.stop();
 /// }
 class FuchsiaPackageServer {
-  FuchsiaPackageServer(this._repo, this._host, this._port);
+  FuchsiaPackageServer(this._repo, this.name, this._host, this._port);
 
   final String _repo;
   final String _host;
@@ -187,6 +188,9 @@
   /// The url that can be used by the device to access this package server.
   String get url => 'http://$_host:$_port';
 
+  // The name used to reference the server by fuchsia-pkg:// urls.
+  final String name;
+
   /// Usees [FuchiaPM.newrepo] and [FuchsiaPM.serve] to spin up a new Fuchsia
   /// package server.
   ///
diff --git a/packages/flutter_tools/test/fuchsia/fuchsia_device_test.dart b/packages/flutter_tools/test/fuchsia/fuchsia_device_test.dart
index eb5c597..d7802f5 100644
--- a/packages/flutter_tools/test/fuchsia/fuchsia_device_test.dart
+++ b/packages/flutter_tools/test/fuchsia/fuchsia_device_test.dart
@@ -695,6 +695,22 @@
   Future<bool> getUp(FuchsiaDevice device, String packageName) async {
     return true;
   }
+
+  @override
+  Future<bool> addRepoCfg(FuchsiaDevice device, FuchsiaPackageServer server) async {
+    return true;
+  }
+
+  @override
+  Future<bool> pkgCtlResolve(FuchsiaDevice device, FuchsiaPackageServer server,
+                             String packageName) async {
+    return true;
+  }
+
+  @override
+  Future<bool> pkgCtlRepoRemove(FuchsiaDevice device, FuchsiaPackageServer server) async {
+    return true;
+  }
 }
 
 class FailingAmberCtl implements FuchsiaAmberCtl {
@@ -712,6 +728,22 @@
   Future<bool> getUp(FuchsiaDevice device, String packageName) async {
     return false;
   }
+
+  @override
+  Future<bool> addRepoCfg(FuchsiaDevice device, FuchsiaPackageServer server) async {
+    return false;
+  }
+
+  @override
+  Future<bool> pkgCtlResolve(FuchsiaDevice device, FuchsiaPackageServer server,
+                             String packageName) async {
+    return false;
+  }
+
+  @override
+  Future<bool> pkgCtlRepoRemove(FuchsiaDevice device, FuchsiaPackageServer server) async {
+    return false;
+  }
 }
 
 class FakeFuchsiaTilesCtl implements FuchsiaTilesCtl {
