Cloud Console Own Projects

The console’s real screens, linked, so you can click through Cloud Console as if it were running. Each screen is a picture of a local copy with the made-up demo project shop, and the areas you can click are outlined. Clicking shows the next screen: nothing is saved, sent or checked.

Start at sign-in Demo scenarios Edge cases Role-based views Every screen

How to use it

Every picture is an admin’s view, so every button shows. A member sees fewer, by their permissions: see Role-based views.

Demo scenarios

Eight short walks to show the console or test it. Each step names the screen, linked, and what to click on it.

1. Sign in and find a project’s failing work

For someone on call, starting the day.

  1. On Sign in, click Sign in with Google. Or click Sign in as the break-glass admin, then Sign in on Admin sign-in.
  2. You land on the Dashboard. Read Failing jobs and Backlogs at the top; in the demo both are empty. Further down, Queues gives each queue’s failed attempts and what is waiting.
  3. Click orders in the Queues table. The queue opens on its Tasks tab: Queue tasks.
  4. Click the Failed tab: Failed tasks lists the tasks that failed for good, with Retry all and Delete all.
  5. Click the Logs tab: Queue logs shows each attempt. Type a task’s name and click Filter to see only its attempts.
  6. Click the Tasks tab, then order-1001: Task shows its call and every attempt with its answer.
  7. For a job, go back to the Dashboard and click homepage-check in its Jobs table: Uptime check.

Expected: you reach one task’s attempts from sign-in without choosing a project first, because the dashboard covers every project you may read.

2. Create a queue, then add a task to it

For a developer wiring a new kind of work.

  1. In the sidebar, click Queues: Queues.
  2. Click Create queue: Create queue.
  3. Type a Queue name: lower-case letters, digits and dashes, starting with a letter. It cannot be changed later. Keep the rate limits and retries, or change them, and click Create.
  4. The queue’s page opens with a green notice, said once: Saved notice. For a new queue it reads “Created the queue” and its name.
  5. Click Create HTTP task in the toolbar: Create a task.
  6. Type the URL, pick the HTTP method, add a header, a body or auth if the target needs them, and click Create.

Expected: the task’s page with “Created the task” and its name: Task created. Its crumbs lead back to the queue.

3. Add many tasks from a file, using the sample

For a one-off batch, such as replaying a day’s orders.

  1. On Queue tasks, click Create HTTP task, and scroll to From a file at the foot of Create a task.
  2. Click Download a sample. It saves cloud-console-tasks-sample.json: two tasks inside { "tasks": [ ... ] }.
  3. Open the file and change each task’s url, and anything else: the sample’s tasks call https://example.com/ as soon as they are made. Only url is required, and a file holds up to 50 tasks.
  4. Under Tasks file, choose the file, then click Create tasks.

Expected: a status line such as “Created 2 tasks”, any task that could not be made with why, and Go to the queue. The file counts against the daily quota as a whole, and when one task is wrong none is made.

The prototype cannot choose a file: Download a sample and Create tasks open the note on From a file.

4. Create a scheduled job in three steps, then pause it

For anything that runs on a clock, such as a nightly report.

  1. In the sidebar, click Jobs: Jobs.
  2. Click Create job: Create a job, at step 1, Define the schedule.
  3. Type a Name, pick the Kind (Call a target, or Uptime check), and type the Frequency in unix-cron (0 9 * * 1 is every Monday at 9:00) and the Time zone. The step shows the next 5 runs. Click Continue.
  4. Step 2, Configure the execution: the target, HTTP or a queue to add a task to, and the call. Click Continue.
  5. Step 3, Configure optional settings: the retries and the attempt deadline. Click Create.
  6. The job’s page opens, Job logs, saying “Created the job” and its name once.
  7. Click Pause in the job’s toolbar. It shows while the job is enabled; nightly-report in the picture is already paused, so it shows Resume.

Expected: the job reads Paused, and its scheduled times do not run until someone clicks Resume.

Steps 2 and 3, and Pause, are not pictured. See the note on the three steps.

5. Give an app an API key, and store a secret it will use

For a developer connecting an app to the console.

  1. In the sidebar, click API keys: API keys.
  2. Under Create an API key, type a Key name, such as the app’s name, and an Expires date if the key should end. Click Create key.
  3. The key is shown once, with a copy button: put it in the app’s settings now. After that the console shows only its name.
  4. In the sidebar, click Secrets: Secrets.
  5. Under Add a secret, type a Name, pick the Kind (HMAC signing secret, Basic auth, Bearer token, OAuth client or Google Chat webhook), fill in what that kind takes, and click Add the secret. For Basic auth, a bearer token or an OAuth client, list the https origins it may be sent to.

Expected: the secret is listed by name, never by its value; an HMAC signing secret is made by the console and shown once. A task or job then picks it by name in its Auth, and the app sends its key with each call to the console’s API.

6. Copy a project’s settings with Export and import

For setting up a second project like the first.

  1. With the project to copy chosen at the top, click Export and import in the sidebar: Export and import.
  2. Click Download. It saves shop-settings.json: the queues, the jobs, the alert settings, the daily quota, and the names of the secrets and service accounts. Never a secret’s value, a key or a token.
  3. Choose the other project in the picker at the top, and open its Export and import.
  4. Under Settings file, choose the file and click Preview: a dry run that lists what would be made, changed and skipped, and the secrets and service accounts the other project lacks.
  5. Add any missing secrets on its Secrets page, then click Apply.

Expected: the changes are made in one go, with one audit line. Nothing is deleted or renamed, and no secret is made.

In the prototype, Preview opens the note on Export and import.

7. Check the free plan’s usage and set alerts

For the owner, keeping the console on the free plan.

  1. In the sidebar, click Usage: Usage. The free plan’s four lines (Worker requests, Durable Object requests, D1 rows read and D1 rows written) each have a level, and each project’s tasks and runs today stand against its daily cap.
  2. As an admin, click Set the cap on a project’s row to change it: 1 to 1,000,000, 0 for no cap, or back to the default of 5,000.
  3. Choose the project at the top, then click Alerts in the sidebar: Alerts.
  4. Under Where alerts go, type the email addresses (console users who may read the project) and pick a Google Chat webhook, or follow Add one on the Secrets page. Under When to alert, set the events. Click Save.
  5. Click Send a test. Under Quiet hours, set a window and its time zone, and click Save quiet hours.

Expected: alerts reach the addresses and the chat when an event happens, at most one of a kind about a project every 10 minutes. On a queue’s Metrics tab, Create alerting policy opens the same page.

8. Invite a person, and read the audit log

For an admin bringing in a colleague.

  1. In the sidebar, under Admin, click People: People.
  2. Click Invite. In Invite someone, type the Email of the Google account they will sign in with, and pick the Role: member (the default) or admin.
  3. For a member, tick the permissions per project, or pick a preset (viewer, editor or manager) to tick them. Click Send the invitation.
  4. A notice says they were invited, and the invitation is listed under Invitations with Resend and Cancel. They accept from the link in their mail, with Google.
  5. In the sidebar, click Audit log: Audit log. Each line gives when, who, the project, the action (such as job.create or alerts.update), the target and the detail, newest first. Pick a project under Show to see only its lines.

Expected: the invitation is in the audit log as invitation.create, and its acceptance as invitation.accept.

The Invite form is not pictured.

Key edge cases to test

True to the code. Each says how to try it in the running console, what should happen, and the picture where there is one. The console checks nothing in the page: every message below is the API’s answer, shown as it is.

Validation errors

Try: on Create queue, type Bad Name! as the name and 9999 as Max dispatches per second, then Create.

Expected: nothing is saved. Each field shows its message beside it (“name is 1 to 63 lower-case letters, digits and dashes, starting with a letter”, “maxDispatchesPerSecond is more than 0 and at most 500”), with the summary at the top.

Every form works this way.

Field errors

A name taken

Try: on Create a task, create a task with the name of one in the queue, or of one that succeeded or was deleted within the last day.

Expected: refused at the top of the form: “A task named … is in this queue, or succeeded or was deleted within the last day”. Nothing is made. The page stays at Create, so scroll up to read the message.

Name already taken

A file with a mistake

Try: in From a file, a task with no url, or the same name twice; in Export and import, a queue whose maxAttempts is out of range.

Expected: nothing is made or changed, and the message names the place in the file, such as tasks.2.url, “x is in the file twice”, or settings.queues.2.maxAttempts. One wrong task stops the whole file.

No picture of this one.

A file that is not JSON

Try: choose a text file, or a JSON file cut short, then Create tasks or Preview.

Expected: the page says the file “is not a JSON file”, before anything is sent.

No picture of this one.

Over the daily quota

Try: create tasks or click Force run once the project’s tasks and job runs today reach its cap (5,000 by default; shop’s is 2,000, see Usage).

Expected: refused: “The project’s daily quota of 2000 tasks and job runs is used up”. A file larger than the room left is refused whole (“has room for 12 more today; the file has 30 tasks”). A scheduled run is skipped and logged. The count starts again at 00:00 UTC.

No picture of this one.

Too many changes in an hour

Try: make more than 120 changes in an hour as one person, across every project. A file of tasks counts one change per 10 tasks.

Expected: the red notice “Too many changes this hour; try again later”, and nothing is written. Exports and imports have their own limit: “At most 20 exports and imports an hour; try again later”.

Refused notice

A wrong sign-in

Try: on Admin sign-in, a wrong email, password or code.

Expected: “Wrong email, password or code”: one message for every reason, so it tells nothing away.

Sign-in refused

A destructive action’s confirm

Try: Delete in a queue’s row menu; also Purge, Delete all, Revoke, a secret’s Delete, or Hold dispatch.

Expected: a dialog asks first and says what is lost: “Delete emails? The queue and its tasks are deleted. This cannot be undone.” Cancel changes nothing. The default queue has no Delete.

Confirm dialog

Empty states

Try: a project with no jobs, or a queue with no tasks.

Expected: “No jobs in this project yet.” with Create job above it, and “No tasks in this queue.”

Also: No tasks yet.

No jobs yet

Loading, and a load that fails

Try: open Queues on a slow connection, and Jobs with the connection off.

Expected: a placeholder, “Loading the queues…”, until the first answer. If it fails, the heading stays with “The console could not be reached. Check the connection and try again.” and Try again: never a blank page.

Also: Load failed.

Loading

A second click while busy

Try: click Resume on a queue twice, quickly.

Expected: the button is disabled, with a turning ring, while its request runs; the second click sends nothing.

Busy button

Role-based views

The pictures are all an admin’s. A member sees only what their permissions in that project allow: for each row and page the API answers the actions allowed, and the page shows a button only then. The eight permissions are read, create, update, delete, pause, run, keys and secrets. When inviting, a preset ticks them: viewer (read), editor (read, create, update, pause, run) or manager (all eight).

WhereAdminMember, read only (viewer)Member, create but not delete (editor)
SidebarEverything, and the Admin group: People and Audit log.Dashboard, Projects, Usage; the project’s Queues, Jobs, Secrets, and Export and import. No API keys, no Alerts, no Admin group.As read only, plus Alerts. API keys only with the keys permission.
ProjectsCreate project, Hold every project, and Hold dispatch on each project.The list and its links only.Hold dispatch on its projects (the pause permission). No Create project.
QueuesCreate queue. Each row’s menu: Edit, Pause or Resume, Purge, and Delete (never for the default queue).The list, with no Create queue and no row menu actions.Create queue; Edit, and Pause or Resume. No Purge, no Delete.
A queue’s pageCreate HTTP task, Edit, Pause or Resume, Delete, Purge, Delete task, Run task; Retry all and Delete all on Failed; Run now or Retry, and Delete, on each task.The tabs and Refresh only.Create HTTP task, Edit, Pause or Resume, Run task, Retry all, and Run now or Retry. No Delete, Purge, Delete task or Delete all.
Jobs and a jobCreate job; Force run, Pause or Resume, Copy, Edit and Delete.The list and each job’s logs, with no actions.Create job; Force run, Pause or Resume, Copy and Edit. No Delete.
API keysCreate key, Rotate and Revoke.Not in the sidebar, and the API refuses the page.The same, unless granted keys.
SecretsAdd, Rotate, change the origins, and Delete; service accounts too.The names only.The names only: adding needs the secrets permission.
AlertsThe whole page.Not in the sidebar.The whole page (the update permission).
Export and importDownload, Preview and Apply, the daily quota included.Download only; the page says importing needs the update permission.Download, Preview and Apply. A change to the daily quota needs an admin, and the dry run says so.
UsageSet the cap on each project, and the Backups section.The free-plan lines and the counts of their projects. No Set the cap, no Backups.The same as read only.
People and Audit logBoth.Not in the sidebar.Not in the sidebar.

To try it, invite a second Google account as a member with the viewer or editor preset (scenario 8), sign in as them in another browser, and walk scenarios 2 and 4 again.

Every screen

Jump straight to any screen, or to a state the console shows on its way.

Sign-in

Sign inThe first page: sign in with Google or a passkey, or go to the break-glass admin’s sign-in. Admin sign-inThe one local account, for when Google sign-in is not available: email, password and a code from an authenticator app.

Overview

DashboardWhere sign-in lands: the last 24 hours, failing jobs, backlogs, the slowest jobs, and every queue and job you may see. ProjectsEvery project you may see, your permissions in it, links to its pages, and its maintenance switch. UsageToday’s free-plan usage, each project’s tasks and runs against its daily cap, and the backups.

Cloud Tasks

QueuesThe project’s queues with their counts and state. Each row’s menu (the three dots) holds what you may do to it. Queue tasksOne queue: its summary, the toolbar, and its tasks on the Tasks tab. Queue metricsThe queue’s charts over a range from 1 hour to 30 days, with a way to make an alert. Queue logsThe queue’s attempts, with a filter for one task. Failed attempts are always kept for 7 days. Queue configurationThe queue’s settings: location, rate limits, retries, logging, priority, dead letter and history. Failed tasksTasks that failed for good, kept for 7 days, with Retry all and Delete all. TaskOne task: when it runs, the call it makes, and each attempt with its answer. Create queueThe form for a new queue: name, rate limits, retries, logs and priority, and a dead-letter queue. Edit on a queue opens the same form, filled in. Create a taskA new HTTP task typed by hand, or up to 50 from a JSON file at the foot of the page.

Cloud Scheduler

JobsThe project’s scheduled jobs, with a filter, a choice of columns and a toolbar for the ticked rows. Job logsOne job: what it calls, how its last run went, its next run, and its runs on the Logs tab. Job configurationThe job’s settings: the schedule, the execution and the optional settings. Uptime checkA job of the kind Uptime check: it calls a URL on its schedule and checks the answer. Results lists each check. Create a jobA new job in three steps: define the schedule, configure the execution, then the optional settings.

Project settings

API keysThe project’s keys for apps: create one (it is shown once), rotate it or revoke it. SecretsSecrets by name, never their values, and service accounts, each with the origins it may be sent to. AlertsWhere alerts go, when to send them, a test, and quiet hours. Export and importA project’s settings as one JSON file: download it, or preview one and apply it.

Admin and you

PeopleThe people of the console, their roles and grants, and the open invitations. Audit logWho changed what and when, newest first, for every project or one. Your accountWho you are, the daily summary mail, and your passkeys.

States

Task createdCreate HTTP task accepted: the task's page, with the notice that it was created. Name already takenCreate HTTP task with a name the queue remembers: 409. Its message is at the top of the form, out of this view: the page stays at Create. Field errorsA form the API refuses: each field's message beside it, and the summary at the top. Confirm dialogA destructive action asks first: the confirm dialog (cancelled after the picture). Row menuA row's actions menu (the three dots), open. Sign-in refusedThe admin sign-in with a wrong password: one message for every reason, so it tells nothing away. Saved noticeAfter a save that comes back to the page: the green notice, said once. Refused noticeA refusal from the API on a page action: the red notice with its message (here the person's hourly change budget, answered by a stand-in). LoadingThe Queues page while its list loads: a skeleton of rows under the words "Loading". No jobs yetA project with no jobs yet: the empty state, with Create job. No tasks yetA queue with no tasks: the Tasks tab's empty state. Load failedThe jobs list when the request fails: the error in place of the list, with Try again. Busy buttonResume clicked and its request still running: the button is disabled, with a turning ring, so a second click sends nothing. HoverA toolbar button under the pointer: the soft accent background. Keyboard focusReached with the keyboard: the focus ring. Phone menuOn a phone the navigation is a drawer behind the menu button.

Pictures of a local copy of Cloud Console with the made-up demo project shop, as it is on main. Clicking shows the next screen; nothing is saved. 22 Oct 2026.